java 通过命令行的Spark-Submit不强制UTF-8编码

6ie5vjzr  于 2023-03-06  发布在  Java
关注(0)|答案(4)|浏览(139)

当我使用Spark的Java API从IDE运行spark作业时,我得到了所需编码格式(UTF-8)的输出,但如果我从命令行启动'spark-submit'方法,输出就会丢失编码。
有没有一种方法,我可以强制编码'Spark提交'时,通过命令行界面使用。
我正在使用Windows 10操作系统和Eclipse IDE。
你的帮助将不胜感激。
谢谢你。

7rfyedvj

7rfyedvj1#

按如下方式运行Spark作业:spark-submit --class com.something.class --name "someName" --conf "spark.driver.extraJavaOptions=-Dfile.encoding=utf-8"

r6l8ljro

r6l8ljro2#

在我的情况下不起作用
我使用的命令是

spark-submit --class com.rera.esearch --jars /Users/nitinthakur/.ivy2/cache/mysql/mysql-connector-java/jars/mysql-connector-java-8.0.11.jar /Users/nitinthakur/IdeaProjects/Rera2/target/scala-2.11/rera2_2.11-0.1.jar
--conf "spark.driver.extraJavaOptions=-Dfile.encoding=utf-8" 127.0.0.1 root

以下命令的输出

println(System.getProperty("file.encoding")) // US-ASCII
println(scala.util.Properties.encodingString) // US-ASCII
p5fdfcr1

p5fdfcr13#

如果您在executor中运行的代码(如foreachPartition或mapPartition之间的代码)中发现此问题,则必须将spark.executor.extraJavaOptions设置为

--conf 'spark.executor.extraJavaOptions=-Dfile.encoding=UTF-8'

如果你代码是在驱动程序中运行的,那么就按照上面所说的设置,也就是

--conf "spark.driver.extraJavaOptions=-Dfile.encoding=utf-8"
py49o6xq

py49o6xq4#

看起来参数的顺序很重要,你必须在JAR文件之前指定编码,如下所示:

spark-submit --class my.package.app --conf "spark.driver.extraJavaOptions=-Dfile.encoding=utf-8" --conf spark.driver.extraJavaOptions=-Dfile.encoding=UTF-8 --conf spark.executor.extraJavaOptions=-Dfile.encoding=UTF-8 my-app.jar

我尝试在JAR文件之后指定编码,但似乎指定的编码没有被选中。

相关问题