通过sqlalchemy的impala连接

时间:2016-09-19 22:07:37

标签: python python-3.x sqlalchemy flask-sqlalchemy impyla

我是hadoop和impala的新手。我设法通过安装impyla并执行以下代码来连接到impala。这是LDAP的连接:

from impala.dbapi import connect
from impala.util import as_pandas
conn = connect(host="server.lrd.com",port=21050, database='tcad',auth_mechanism='PLAIN', user="alexcj", use_ssl=True,timeout=20, password="secret1pass")
然后我就可以抓住游标并执行查询:

cursor = conn.cursor()
cursor.execute('SELECT * FROM tab_2014_m LIMIT 10')
df = as_pandas(cursor)

我希望能够使用sqlalchemy连接到impala并能够使用一些不错的sqlalchemy功能。我发现a test file in imyla source code说明了如何使用impala驱动程序创建sqlalchemy引擎,如:

engine = create_engine('impala://localhost')

我希望能够做到这一点,但我无法做到,因为我对上述连接功能的调用有更多参数;我不知道如何将这些传递给sqlalchemy的create_engine以获得成功的连接。有没有人这样做过?感谢。

2 个答案:

答案 0 :(得分:2)

https://github.com/cloudera/impyla/issues/214

所述
import sqlalchemy
def conn():
    return connect(host='some_host', 
                         port=21050,
                         database='default',
                         timeout=20,
                         use_ssl=True,
                         ca_cert='some_pem',
                         user=user, password=pwd,
                         auth_mechanism='PLAIN')

engine = sqlalchemy.create_engine('impala://', creator=conn)

答案 1 :(得分:0)

import time

from sqlalchemy import create_engine, MetaData, Table, select, and_


ENGINE = create_engine(
    'impala://{host}:{port}/{database}'.format(
        host=host,    # your host
        port=port,
        database=database,
    )
)
METADATA = MetaData(ENGINE)
TABLES = {
    'table': Table('table_name', METADATA, autoload=True),

}