0

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

4

2 回答 2

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

于 2019-09-19T20:15:23.277 回答
0

您可以使用以下函数为 pyhive/databricks 创建 SQL Alchemy 引擎。 令牌:可以在数据块控制台 区域生成访问令牌:例如 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}
        )
于 2020-05-14T19:43:49.357 回答