如何使用pyhive sqlalchemy连接到Databricks集群?

时间:2019-02-22 23:44:54

标签: sqlalchemy databricks python-db-api pyhive

我正在使用以下代码连接到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集群的经验?

2 个答案:

答案 0 :(得分:1)

您要如何访问配置单元?您是否在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

答案 1 :(得分:0)

您可以使用以下功能为pyhive / databricks创建一个SQL Alchemy引擎。 令牌:可以在databricks控制台上生成访问令牌 区域:例如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}
        )