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

攝取. csv文件與空間使用三角洲住到一個流表列名

vaver_3
新的貢獻者三世

如何攝取. csv文件與空間在列名使用三角洲住到一個流表嗎?所有的字段都應該閱讀使用默認行為DLT . csv文件自動裝卸機——作為字符串。

運行管道給了我一個錯誤的無效字符列名稱的模式。(“中發現無效的字符(s), {} () \ n \ t =”的列名

模式”。)然而,添加列映射表屬性(推薦完整的錯誤評論)然後給我錯誤“com.databricks.sql.transaction.tahoe.ColumnMappingUnsupportedException:

模式變化發現:“並讓我知道”模式變化期間是不允許修改的列映射模式”。

我甚至嚐試設置模式的表信息,當閱讀. csv。

df = spark.read.format (csv) .options(頭= '真的').load (path_to_load) tbl_schema = df.schema.add (“_rescued_data”,“弦”,真的)
@dlt。表(評論= "評論"、模式= tbl_schema table_properties ={'三角洲。minReaderVersion‘:’2’、‘三角洲。5”、“delta.columnMapping minWriterVersion‘:’。模式”:“名字”})def BB_EDIP_raw():返回(spark.readStream.format .option (“cloudFiles (“cloudFiles”)。形式at", "csv") .options(header='true') # .option("inferSchema", "true") .schema(tbl_schema) .load(path_to_load) )

我仍然得到同樣的錯誤——模式改變從舊模式的“根”新模式的根/所有字段(參見下麵-縮短的字段列表):

com.databricks.sql.transaction.tahoe.ColumnMappingUnsupportedException:

模式變化檢測:

舊模式:

新模式:

——UniqueID:字符串(nullable = true)

——FirstName:字符串(nullable = true)

——MiddleName:字符串(nullable = true)

——LastName:字符串(nullable = true)

——HOME_BUSINESS:字符串(nullable = true)

——BUSINESS_OWNER1:字符串(nullable = true)

——不使用:字符串(nullable = true)

——EDUC_MODEL1:字符串(nullable = true)

——政治麵貌:字符串(nullable = true)

——工作夫婦雙重收入:字符串(nullable = true)

——在線評分:字符串(nullable = true)

——_rescued_data:字符串(nullable = true)

模式變化期間是不允許修改的列映射模式。

所以,如何攝取. csv文件空間列名使用三角洲住到一個流表嗎?是可能的嗎?我要嚐試一種不同的方法嗎?這些文件由供應商提供給我們,所以我想不必為了得到原始/銅預處理層加載。謝謝!

供參考,這是第一個錯誤的空間列名稱:

org.apache.spark.sql.AnalysisException:

發現無效的字符(s)在",{}()\ n \ t = "的列名

模式。

請啟用設置表屬性的delta.columnMapping列映射。模式的“名字”。

有關更多細節,請參考https://docs.m.eheci.com/delta/delta-column-mapping.html

或者你可以使用別名來重命名它。

org.apache.spark.sql.AnalysisException:Column name "Not in use" contains invalid character(s). Please use alias to rename it.

1接受解決方案

接受的解決方案

vaver_3
新的貢獻者三世

“withColumnRenamed”上額外的搜索之後,我能夠用“_”替換所有空間列名一次性通過選擇和別名:

@dlt。視圖(評論= " ")def vw_raw():返回(spark.readStream.format .option (“cloudFiles (“cloudFiles”)。格式”、“csv”) .options(頭= '真的').option (“inferSchema”、“true”) .load @dlt (path_to_load))。表(評論= " ")def table_raw():返回(dlt.readStream (vw_raw) .select([坳(c) .alias (c。替換(“”、“_”)的c dlt.readStream (“vw_raw”) .columns]))

它還使用“cloudFiles工作。在ferColumnTypes" = "true" and "cloudFiles.schemaHints" in the view definition.

在原帖子查看解決方案

1回複1

vaver_3
新的貢獻者三世

“withColumnRenamed”上額外的搜索之後,我能夠用“_”替換所有空間列名一次性通過選擇和別名:

@dlt。視圖(評論= " ")def vw_raw():返回(spark.readStream.format .option (“cloudFiles (“cloudFiles”)。格式”、“csv”) .options(頭= '真的').option (“inferSchema”、“true”) .load @dlt (path_to_load))。表(評論= " ")def table_raw():返回(dlt.readStream (vw_raw) .select([坳(c) .alias (c。替換(“”、“_”)的c dlt.readStream (“vw_raw”) .columns]))

它還使用“cloudFiles工作。在ferColumnTypes" = "true" and "cloudFiles.schemaHints" in the view definition.

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

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

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

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

Baidu
map