Azure Databricks中有需要查询的SQL端点。我已经安装了Spark连接器并正确地配置了它,因为当我用库调用端点时,它会返回完整的dataframe (大约900 K行)。
from databricks import sql
import pandas as pd
def databricks_to_dataframe():
with sql.connect(server_hostname="<server host name>",
http_path="<http path>",
access_token="<access token to databricks>") as connection:
with connection.cursor() as cursor:
cursor.execute("SELECT * FROM my_table")
result = cursor.fetchall()
df = pd.DataFrame(result)
return df
当我试图对pyodc做同样的操作时,我会得到以下错误:
错误:('HY000',“服务器上的HY000Hardy错误:错误代码:'0‘错误消息:'Simba (134) File 31dc6dfe-3a38-4e4a-8f03-66f6efdb4581:试图从云存储下载结果文件时发生可检索的错误,但重试限制已经超过。错误详细信息:文件31dc6dfe-3a38-4e4a-8f03-66f6efdb4581:结果文件URL在1658755584065 (Unix时间戳)’(SQLFetch)上过期了。”
以下是供参考的代码:
import pyodbc
conn = pyodbc.connect("DSN=My_DSN", autocommit=True)
cursor = conn.cursor()
cursor.execute("SELECT * FROM my_table")
data = cursor.fetchall()
当我将查询限制在20k行时,它可以正常工作。
我和R (RODBC)有同样的问题,但是这次根本没有错误消息,只是一个空的数据!以下是R中的代码:
library(RODBC)
conn <- odbcConnect("My_DSN")
Data <- sqlQuery(conn, "SELECT * FROM my_table")
在这里,当我将查询限制为几个k时,它也可以正常工作。有什么想法吗?谢谢!
发布于 2022-08-05 08:38:15
在python中找到了方法,把这个留在这里,以防有人需要它
我只需要像这样将EnableQueryResultDownload=0添加到康涅狄格
import pyodbc
import pandas as pd
conn = pyodbc.connect("DSN=My_DSN;EnableQueryResultDownload=0;",autocommit=True)
cursor = conn.cursor()
cursor.execute("SELECT * FROM my_table")
df = pd.DataFrame.from_records(cursor.fetchall(), columns=[col[0] for col in cursor.description])
在R:
library(RODBC)
conn <- odbcConnect("My_DSN;EnableQueryResultDownload=0;")
Data <- sqlQuery(conn, "SELECT * FROM my_table")
https://stackoverflow.com/questions/73111536
复制相似问题