【问题标题】:HDFS Excel Rows got decreased when running the spark job on Yarn在 Yarn 上运行 spark 作业时,HDFS Excel 行数减少
【发布时间】:2021-09-06 20:13:25
【问题描述】:

在本地 (IntelliJ IDEA) 中运行相同的作业时,输出计数很好(例如 -55)。 但是当使用 spark-submit 在 Yarn 上提交它时,只得到几行(Rows -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 读取所有块。

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

【问题讨论】:

  • 请使用com.test.Main中使用的代码更新您的问题

标签: java apache-spark hadoop-yarn spark-submit spark-excel


【解决方案1】:

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

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

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

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

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

希望这会有所帮助?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-25
    • 2017-01-04
    • 2015-08-02
    • 2015-12-05
    • 2017-10-16
    • 2015-07-14
    • 2018-10-29
    • 1970-01-01
    相关资源
    最近更新 更多