使用 JDBC 连接到 databrick 默认集群并将表读入 pyspark 数据帧。所有列变成与列名相同

问题描述 投票:0回答:1

我有表存储在数据块集群默认数据库中。

我的表2:

我使用如下代码使用 JDBC 连接到 databrick 默认集群并将表读入 pyspark 数据框

url = 'jdbc:databricks://[workspace domain]:443/default;transportMode=http;ssl=1;AuthMech=3;httpPath=[path];AuthMech=3;UID=token;PWD=[your_access_token]'

driver_class = 'com.databricks.client.jdbc.Driver'
# create a DataFrame by querying the MySQL database
df_1 = spark.read.format("jdbc")\
.option("url", url)\
.option("driver", driver_class)\
.option("dbtable", 'my_table2')\
.load()

df_1.show()

最终的 df_1 数据帧变为

+----+
|name|
+----+
|name|
|name|
|name|
+----+

请帮忙!

最后的结果应该是

+----+
|name|
+----+
|John|
|Jane|
|Bob |
+----+
dataframe azure pyspark jdbc databricks
1个回答
0
投票

请遵循JDBC语法:

jdbc:sqlserver://<server_name>.database.windows.net:1433;database<database_name>;user=<user_name>;password=<Password>;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;

我在环境中重现了同样的结果。

使用 JDBC 连接 azure Databricks 和 azure SQL

代码:

url = 'jdbc:sqlserver://<server_name>.database.windows.net:1433;database<database_name>;user=<user_name>;password=<Password>;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;'

driver_class = 'com.microsoft.sqlserver.jdbc.SQLServerDriver'

df_1 = spark.read.format("jdbc").option("url", url).option("driver", driver_class).option("dbtable", 'table1').load()

df_1.show()

# Create a view or table
df_1.createOrReplaceTempView("my_table2")
    
    

enter image description here

输出:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.