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

utf - 16問題文件和unicode字符

DominicRobinson
新的貢獻者二世

有人能提供一些見解——我花了幾天時間試圖解決這個問題

我們已經裝載在數以百計的選項卡中分離的任務文本文件標簽分隔符用utf - 16編碼的小端字節序。我們的組織是一個國際性的一個,因此我們的源包含大量的unicode字符。文件的編碼不能更改,也不能格式。

經常我看到的問題是,這些unicode字符不正確顯示通過火花解釋器,另外這個問題導致標簽字段名逃脫,最終導致後續列轉向左邊。

一個典型的例子是20歐元符號U + ac€,符號顯示細notepad++打開時,vi或幾乎任何類型的unicode編輯能力。

然而當顯示在dataframe我看到¬•”,我認為這可能是一個問題,我們的應用程序的方式編碼的文件,但沒有似乎延伸到任何UTF-16LE文件編碼在Windows。我可以複製這個每次隻需輸入歐元符號與utf - 16編碼和Windows記事本保存文件加載到磚。

這是導致我們真正的問題——誰能幫忙嗎?

示例代碼:

val df =火花。讀.format (com.databricks.spark.csv) .option .option(“標題”、“true”) (“inferSchema”,“真正的”).option(“分隔符”,“\ \ t”) .option .option(“尾數法”、“小”)(“編碼”,“utf - 16”) .option .option(“字符集”、“utf - 16”) (“timestampFormat”、“yyyy-MM-dd hh: mm: ss”) .option .option(“編碼”,“gzip”) (“9”,“t \”) . csv (adls / mnt /測試/ cu100.gz)顯示(df)

這看起來可能是一個問題與csv連接器,因為:

val測試= Seq (“€”) val t =測試。toDF顯示(t)

作品absoloutely細

4回複4

User16817872376
新的貢獻者三世

嗨@Dominic羅賓遜,我的同事告訴我,CSV來源應該支持UTF-16LE UTF-16BE,但不是純utf - 16。這可能有助於看CSV源的測試套件——簡單的例子是,是不可能的。好像你說應該由UTF-16LE——如果是這樣,你可能想要確認沒有差異引起的創建文件窗口。如果我沒記錯的話,Windows格式文本文件比Unix / Mac略有不同。

邊注,你不應該使用“com.databricks.spark。csv”了。火花有一個內置的csv數據源的火花2.0和磚包不再更新。

DominicRobinson
新的貢獻者二世

它不能讀了一個簡單的一列文本文件與歐元符號——它似乎並沒有一個windows編碼問題要麼是我寫的一個文件上使用vi Fedora:

這是一個非常簡單的例子文件:

https://codiad.dcrdev.com/workspace/Workbin/test1.txt

User16817872376
新的貢獻者三世

嗨@Dominic羅賓遜我無法創建一個簡單的複製這個問題。我能寫出一個文件與歐元符號列使用dataframe.write.csv(路徑),和符號很好當我讀文件在使用spark.read.csv(路徑)。我認為你是正確的,問題是之間的交互csv源和任何生產你的文件。

你試試這個與內置的csv源了嗎?

如果你繼續有問題,請提出一個支持與磚的票。它可能是一個錯誤,也可能是您的特定用例是不支持的,可以添加到csv源頭被磚。

User16817872376
新的貢獻者三世

你總是還可以讀取的文件作為一個文本文件,然後運行一個utf - 16解碼器/編碼器圖書館作為一個UDF的文本。

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

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

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

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

Baidu
map