取消
顯示的結果
而不是尋找
你的意思是:

問題引用結構體類型列在使用ODBC

dcrezee
新的貢獻者三世

我試圖連接到使用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的連接,但他們都有同樣的問題。

有辦法配置數據磚,辛巴司機不知怎麼正確地轉義引號?

1接受解決方案

接受的解決方案

BilalAslamDbrx
尊敬的貢獻者二世
尊敬的貢獻者二世

@Derk Crezee——我今天學到的東西。顯然ODBC不轉換為JSON。規範沒有定義如何返回複雜類型,事實上,隻在SQL 2016了。這正是你跑到!

曆史的終結的教訓:grinning_face_with_smiling_eyes:這裏有一個解決辦法:

從default.quotes_issue選擇to_json(嵌套的)

這將返回:

{“nested_column”:“嵌套\“字符”}

這是有效的JSON。

在原帖子查看解決方案

11日回複11

Kaniz
社區經理
社區經理

嗨@Derk Crezee !我的名字叫Kaniz,我這裏的技術主持人。很高興認識你,謝謝你的問題!看看你的同行在社區中有一個回答你的問題。否則我將盡快給你回電。謝謝。

dcrezee
新的貢獻者三世

嗨@Kaniz開羅,

謝謝你的回複。我仍然好奇上麵問題的答案,但我還是設法找到一個工作。

解決

使用to_json方法,您可以讓火花將所有複雜的列轉換為json,而不是依賴SQL端點/辛巴司機為你這樣做。如果你想完全自動化to_json的使用,描述表語句可以幫助你找出哪些數據類型列。

Kaniz
社區經理
社區經理

嗨@Derk Crezee,在這裏你可以找到詳細的全麵的解釋連接到SQL server通過磚。

https://datathirst.net/blog/2018/10/12/executing-sql-server-stored-procedures-on-databricks-pyspark

請讓我知道這是否有幫助。

dcrezee
新的貢獻者三世

嗨@Kaniz開羅,

我的問題不是相關連接到SQL Server數據磚,但時我得到一個錯誤連接使用pyodbc磚。

謝謝,

Derk

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map