Как использовать pyhive sqlalchemy для подключения к кластерам Databricks?

Я использую следующий код для подключения к кластерам Databricks. Но получил thrift.transport.TTransport.TTransportException: TSocket read 0 bytes . Я думаю, что есть ошибка my_url в create_engine.

from sqlalchemy.engine import create_engine

engine = create_engine(my_url)

res = engine.execute('SELECT * FROM 
alex_db.sams_us_clubs_sams_member_index LIMIT 5')

for row in res:
    print(res)

Поскольку это кластер компании, я не могу показать детали my_url. Есть ли у кого-нибудь опыт использования pyhive sqlalchemy для подключения к кластеру databricks?


person dlwlrma    schedule 22.02.2019    source источник


Ответы (2)


Как вы хотите получить доступ к улью? Вы запускаете его на сервере Spark / Databricks?

Если вы хотите запустить его программно, посетите следующий сайт о настройке блоков данных с помощью пакетов jdbc / odbc (https://docs.databricks.com/user-guide/bi/jdbc-odbc-bi.html?)

Если вы запускаете приложение на сервере Spark, вы можете включить запросы к улью следующим образом:

// Create a SparkSession. No need to create SparkContext
// You automatically get it as part of the SparkSession
spark = SparkSession
       .builder()
       .appName("SparkSessionZipsExample")
       .config("spark.sql.warehouse.dir", warehouseLocation)
       .enableHiveSupport()
       .getOrCreate()

источник: https://databricks.com/blog/2016/08/15/how-to-use-sparksession-in-apache-spark-2-0.html

person Goldengenova    schedule 19.09.2019

Вы можете создать движок SQL Alchemy для pyhive / databricks, используя приведенную ниже функцию. токен: токен доступа можно создать в регионе консоли Databricks: например, https: // $ {location_of_server} .azuredatabricks.net / database: имя базы данных, к которой вы хотите подключиться, http_path: sql / protocolv1 / o / $ {organization_id} / $ {cluster_id}
Вам нужно будет добавить в свой проект все необходимые зависимости.

dbfs_engine = create_engine(
        "databricks+pyhive://token:" + token + "@" + region + ".azuredatabricks.net:443/" + database, 
        connect_args={"http_path": http_path}
        )
person Ross Tierney    schedule 14.05.2020
comment
Было бы предпочтительнее добавить объяснение для вашего кода - person keikai; 15.05.2020
comment
Я думаю, что @Ross Tiemey здесь имеет в виду библиотеку github.com/crflynn/databricks-dbapi - person botchniaque; 18.04.2021