2016-09-19 10 views
1

Ich bin neu in Hadoop und Impala. Ich habe es geschafft, mich mit Impala zu verbinden, indem ich impyla installiere und den folgenden Code ausführe. Dies ist Verbindung von LDAP:impala Verbindung via sqlalchemy

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") 

Ich bin dann in der Lage, einen Cursor zu greifen und führen Abfragen als:

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

Ich möchte in der Lage verwenden sqlalchemy können, um eine Verbindung zu Impalas und seine um einige nette sqlalchemy Funktionen zu benutzen. Ich fand a test file in imyla source code, die zeigt, wie mit Impalas Fahrern einen sqlalchemy Motor zu schaffen, wie:

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

Ich möchte in der Lage sein, das zu tun, aber ich bin nicht in der Lage, weil mein Aufruf an die Verbindungsfunktion einen oben hat viel mehr Parameter; und ich weiß nicht, wie ich diese an create_engine von sqlalchemy weitergeben soll, um eine erfolgreiche Verbindung zu erhalten. Hat jemand das getan? Vielen Dank.

+0

Sie können [ 'connect_args'] (http://docs.sqlalchemy.org/en/latest/core/engines.html#sqlalchemy.create_engine. params.connect_args), um zusätzliche Argumente für 'connect()' anzugeben. – univerio

Antwort

1

Wie erklärt bei 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

Diese Antwort beantwortet die Frage nicht; Als ein Beispiel wird nicht gezeigt, wie ssl-Parameter eingefügt werden –