我試圖連接到使用pyodbc磚,我遇到一個問題結構列。
據我理解,結構體數組列和列pyodbc不支持,但是它們轉換為JSON。然而,當有嵌套列包含引號(“),返回的JSON無效,即引用不逃。
我使用數據集:
從pyspark。sql行數據導入=[(嵌套=行(nested_column =“嵌套\“性格”)),]df = spark.sparkContext.parallelize(數據).toDF () (df。寫.format(“δ”).mode .option(“覆蓋”)(“路徑”,“/δ/ quotes_issue /”) .saveAsTable (“default.quotes_issue”))
查詢數據後通過pyodbc(使用文檔在這裏)
康涅狄格州= pyodbc。連接(“DSN = Databricks_Cluster”, autocommit = True)光標= conn.cursor()遊標。執行(“SELECT * FROM default.quotes_issue”)行= cursor.fetchall行(r):打印(右)
這給了我以下無效的JSON輸出。
”{nested_column”:“嵌套”字符"}
我試著與磚計算集群的端點,以及新的SQL端點。也試過對於Python磚SQL的連接,但他們都有同樣的問題。
有辦法配置數據磚,辛巴司機不知怎麼正確地轉義引號?
@Derk Crezee——我今天學到的東西。顯然ODBC不轉換為JSON。規範沒有定義如何返回複雜類型,事實上,隻在SQL 2016了。這正是你跑到!
曆史的終結的教訓這裏有一個解決辦法:
從default.quotes_issue選擇to_json(嵌套的)
這將返回:
{“nested_column”:“嵌套\“字符”}
這是有效的JSON。
嗨@Derk Crezee,在這裏你可以找到詳細的全麵的解釋連接到SQL server通過磚。
https://datathirst.net/blog/2018/10/12/executing-sql-server-stored-procedures-on-databricks-pyspark
請讓我知道這是否有幫助。