【问题标题】:Spark-Submit through command line does not enforce UTF-8 encodingSpark-Submit 通过命令行不强制 UTF-8 编码
【发布时间】:2016-12-02 20:02:52
【问题描述】:
当我使用 Spark 的 Java API 从 IDE 运行我的 spark 作业时,我会以所需的编码格式 (UTF-8) 获得输出。但是如果我从命令行启动“spark-submit”方法,输出就会丢失编码。
当通过命令行界面使用时,有没有一种方法可以强制对“spark-submit”进行编码。
我使用的是 Windows 10 操作系统和 Eclipse IDE。
非常感谢您的帮助。
谢谢。
【问题讨论】:
标签:
java
apache-spark
encoding
utf-8
bigdata
【解决方案1】:
像这样运行您的 Spark 作业:
spark-submit --class com.something.class --name "someName" --conf "spark.driver.extraJavaOptions=-Dfile.encoding=utf-8"
【解决方案2】:
在我的情况下不起作用
我使用的命令是
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
【解决方案3】:
如果您在 executor 中运行的代码中看到问题(例如 foreachPartition 或 mapPartition 之间的代码),则必须设置 spark.executor.extraJavaOptions
--conf 'spark.executor.extraJavaOptions=-Dfile.encoding=UTF-8'
如果您的代码在驱动程序中运行,则按上述设置,即
--conf "spark.driver.extraJavaOptions=-Dfile.encoding=utf-8"