Spark作业写入NFSv3安装卷的变音问题

时间:2017-10-13 06:23:16

标签: java linux scala apache-spark nfs

我正在尝试在spark作业期间将文件复制到nfsv3安装的卷。有些文件包含变音符号。例如:

格式错误的输入或输入包含不可映射的字符: /import/nfsmountpoint/Währungszählmaske.pdf

错误发生在以下scala代码行中:

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

文件编码显示为ANSI X3.4-1968,尽管spark机器上的linux语言环境设置为en_US.UTF-8。

我已经尝试使用以下参数更改spark作业本身的区域设置:

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

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

这解决了错误,但目标卷上的文件名如下所示: /import/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)

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:0)

通过设置如上所述的编码设置并手动转换为和转换为UTF-8来解决此问题:

Solution for encoding conversion

使用支持UTF-8的NFSv4将是一个更简单的解决方案。