微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Yarn 上运行 Spark 作业时,HDFS Excel Rows 减少了

如何解决在 Yarn 上运行 Spark 作业时,HDFS Excel Rows 减少了

在本地(IntelliJ IDEA)中运行相同的作业时,输出计数很好(例如 -55)。 但是当使用 spark-submit 在 Yarn 上提交时,只得到几行(第 -12 行)。

spark2-submit --master yarn --deploy-mode client --num-executors 5 --executor-memory 5G --executor-cores 5 --driver-memory 8G --class com.test.Main --packages com.crealytics:spark-excel_2.11:0.13.1 --driver-class-path /test/ImpalaJDBC41.jar,/test/TCLIServiceClient.jar --jars /test/ImpalaJDBC41.jar,/test/TCLIServiceClient.jar /test/test-1.0-SNAPSHOT.jar

使用 master 时 - yarn 获取部分行。和 使用本地时 - 能够读取所有行但得到异常 - Caused by: java.sql.sqlFeatureNotSupportedException: [Simba][JDBC](10220) Driver not capable.

在集群上运行时似乎无法从 HDFS 读取所有块。

任何帮助将不胜感激。谢谢

解决方法

正如您所提到的,您可以在单个执行程序(运行 --master local)中获取所有行,这意味着所有分区都在驱动程序中,您正在使用它在 spark-submit 中提交作业。

一旦你的分区分布在集群节点上(--master yarn) 您丢失了许多分区并且无法读取所有 HDFS 块。

  1. 查看您的代码是否使用带有 if 条件的嵌套循环,例如 - 尽管( 尽管() )

或任何其他带有 if 条件的循环。通常,外循环在每个节点上复制相同的分区,然后组合器将结果合并为单个分区。请检查这个。

  1. 对于 JDBC 异常,您需要将所有 NULL 值替换为其他值,例如在最终数据帧上使用 .na().fill() 方法。由于文件中的每一列行应大于 CHAR > 0(空值的长度为零,即 JDBC 写入不支持)

希望对你有帮助?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。