当我使用Spark的Java API从IDE运行spark作业时,我得到了所需编码格式(UTF-8)的输出,但如果我从命令行启动'spark-submit'方法,输出就会丢失编码。有没有一种方法,我可以强制编码'Spark提交'时,通过命令行界面使用。我正在使用Windows 10操作系统和Eclipse IDE。你的帮助将不胜感激。谢谢你。
7rfyedvj1#
按如下方式运行Spark作业:spark-submit --class com.something.class --name "someName" --conf "spark.driver.extraJavaOptions=-Dfile.encoding=utf-8"
spark-submit --class com.something.class --name "someName" --conf "spark.driver.extraJavaOptions=-Dfile.encoding=utf-8"
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
p5fdfcr13#
如果您在executor中运行的代码(如foreachPartition或mapPartition之间的代码)中发现此问题,则必须将spark.executor.extraJavaOptions设置为
--conf 'spark.executor.extraJavaOptions=-Dfile.encoding=UTF-8'
如果你代码是在驱动程序中运行的,那么就按照上面所说的设置,也就是
--conf "spark.driver.extraJavaOptions=-Dfile.encoding=utf-8"
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文件之后指定编码,但似乎指定的编码没有被选中。
4条答案
按热度按时间7rfyedvj1#
按如下方式运行Spark作业:
spark-submit --class com.something.class --name "someName" --conf "spark.driver.extraJavaOptions=-Dfile.encoding=utf-8"
r6l8ljro2#
在我的情况下不起作用
我使用的命令是
以下命令的输出
p5fdfcr13#
如果您在executor中运行的代码(如foreachPartition或mapPartition之间的代码)中发现此问题,则必须将spark.executor.extraJavaOptions设置为
如果你代码是在驱动程序中运行的,那么就按照上面所说的设置,也就是
py49o6xq4#
看起来参数的顺序很重要,你必须在JAR文件之前指定编码,如下所示:
我尝试在JAR文件之后指定编码,但似乎指定的编码没有被选中。