【问题标题】:How to use pyhive sqlalchemy to connect to Databricks clusters?如何使用 pyhive sqlalchemy 连接到 Databricks 集群?
【发布时间】:2020-05-15 18:43:42
【问题描述】:

我正在使用以下代码连接到 Databricks 集群。但是得到了thrift.transport.TTransport.TTransportException: TSocket read 0 bytes 。我认为 create_engine 中的 my_url 有一些错误。

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 集群的经验?

【问题讨论】:

    标签: sqlalchemy databricks python-db-api pyhive


    【解决方案1】:

    您希望如何访问蜂巢?你是在 spark/Databricks 服务器上运行它吗?

    如果您想以编程方式运行它,请查看以下网站,了解如何通过 jdbc/odbc 包设置数据块 (https://docs.databricks.com/user-guide/bi/jdbc-odbc-bi.html?)

    如果您在 spark 服务器上运行应用程序,您可以像这样启用 hive 查询:

    // 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

    【讨论】:

      【解决方案2】:

      您可以使用以下函数为 pyhive/databricks 创建 SQL Alchemy 引擎。 token:可以在databricks控制台生成访问token 地区:例如https://${location_of_server}.azuredatabricks.net/ 数据库:要连接的数据库的名称 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}
              )
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-27
      • 1970-01-01
      • 2017-10-07
      • 1970-01-01
      相关资源
      最近更新 更多