2017-10-13 166 views
0

我試圖在spark作業期間將文件複製到nfsv3掛載卷。一些文件包含變音符號。例如:Spark作業寫入NFSv3掛載卷的變音問題

格式錯誤的輸入或輸入的內容包含不可映射字符: /import/nfsmountpoint/Währungszählmaske.pdf

在下面的行的Scala代碼時出現錯誤:

//targetPath is String and looks ok  
val target = Paths.get(targetPath) 

該文件的編碼是顯示爲ANSI X3.4-1968,但火花機上的Linux語言環境設置爲en_US.UTF-8。

我已經試圖改變區域設置使用以下參數火花工作本身:

--conf 'spark.executor.extraJavaOptions=-Dsun.jnu.encoding=UTF8 -Dfile.encoding=UTF8' 

--conf 'spark.driver.extraJavaOptions=-Dsun.jnu.encoding=UTF8 -Dfile.encoding=UTF8' 

這解決了錯誤,但目標捲上的文件名看起來是這樣的: /導入/ nfsmountpoint/?w^hrungsz hlmaske.pdf

卷掛載點是:

hnnetapp666.mydomain:/vol/nfsmountpoint on /import/nfsmountpoint type nfs (rw,nosuid,relatime,vers=3,rsize=65536,wsize=65536,namlen=255,hard,noacl,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=4.14.1.36,mountvers=3,mountport=4046,mountproto=udp,local_lock=none,addr=4.14.1.36) 

有沒有一個可行的辦法來解決這一問題?

回答

0

通過設置像上面並手動提到的編碼設置從和向UTF-8轉換解決這樣的:

Solution for encoding conversion

只是使用的NFSv4使用UTF-8支持將是一個簡單的解決方案。