2017-10-13 170 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支持将是一个简单的解决方案。