2016-09-19 988 views
1

我是新來的hadoop和黑斑羚。我設法通過安裝impyla並執行以下代碼來連接到impala。這是LDAP連接:通過sqlalchemy impala連接

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連接到黑斑羚和能使用一些不錯的sqlalchemy函數。我發現a test file in imyla source code,說明如何創建SQLAlchemy的發動機,像黑斑羚司機:

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

我希望能夠做到這一點,但我不能,因爲我上面的連接函數調用有很多參數;我不知道如何將這些傳遞給sqlalchemy的create_engine以獲得成功的連接。有沒有人做過這個?謝謝。

+0

您可以使用['connect_args']解釋(http://docs.sqlalchemy.org/en/latest/core/engines.html#sqlalchemy.create_engine。 params.connect_args)指定'connect()'的額外參數。 – univerio

回答

1

截至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) 
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), 

} 
+0

這個答案不回答這個問題;作爲一個例子,它不顯示如何包含ssl參數 –