Hive заявки чрез Python клиент

Имам инсталиран Hive 0.8 на hadoop клъстер, работещ в AWS EMR.

Опитвам се да направя малко QA на данни, което включва изпълнение на заявка за кошер и извличане на резултатите в python, където се съдържа малко повече логика.

Понастоящем това се постига чрез изпращане на заявка за кошер като стъпка на поток от задания, изхвърляне на тези резултати в локално хранилище на главния възел, SCP-иране на тези резултати на моята локална машина и след това зареждане на файла с python и анализиране на резултатите. Като цяло не е много забавен процес.

В идеалния случай бих могъл да направя това по начин, подобен на:

conn = hive.connect(ip, port, user, pw)
cursor = conn.cursor()
cursor.execute(query)
rs = cursor.fetchall()

Изглежда, че това е възможно. Hive казва, че го поддържа тук. Има и друг SO въпрос изглежда, че прави това, което бих искал да направя.

Имам обаче проблем с намирането на документация. По-специално, не успях да разбера откъде да получа пакетите, използвани в тези примери. Би било изключително полезно, ако някой успее да предостави подробни инструкции как да накарате клиента на python да работи, но ако не успеете, би било полезно просто да знаете откъде да получите тези пакети.


person Justin    schedule 10.05.2013    source източник


Отговори (2)


Ако изградите кошер от източника, модулите ще бъдат разположени тук (спрямо директорията на кошера):

./build/dist/lib/py

Трябва да имате достъп до модулите, ако включите този път във вашата променлива на средата PYTHONPATH или добавите този път към вашия път на python във вашия скрипт с модула sys.

Също така имайте предвид, че вече няма модул с име „кошер“. В примерния код, който сте свързали, „hive“ трябва да се замени с „hive_service“.

person niko246    schedule 31.07.2013

Изглежда, че пакетът hive_utils има това, което търсите. Разглеждайки страницата pypi, можете да изпълнявате заявки по следния начин:

query = """
    SELECT country, count(1) AS cnt
    FROM User
    GROUP BY country
"""
hive_client = hive_utils.HiveClient(
    server=config['HOST'],
    port=config['PORT'],
    db=config['NAME'],
)
for row in hive_client.execute(query):
    print '%s: %s' % (row['country'], row['cnt'])

Инсталирането на това трябва да инсталира и необходимите спестовни пакети.

person Namcor    schedule 05.09.2013