【问题标题】:Failed to get broadcast_1_piece0 of broadcast_1 in pyspark application无法在 pyspark 应用程序中获取 broadcast_1 的 broadcast_1_piece0
【发布时间】:2017-05-05 08:02:59
【问题描述】:

我正在使用 Python 3.4 在 Apache Spark 2.00 上构建应用程序,并尝试从 HDFS (Hadoop 2.7) 加载一些 CSV 文件并从这些 CSV 数据中处理一些 KPI。

我曾经在我的应用程序中随机遇到“无法获得广播_1 的广播_1_piece0”错误,然后它停止了。

在搜索了很多 google 和 stakeoverflow 之后,我发现只有如何通过从 /tmp 目录中手动删除 spark 应用程序创建的文件来摆脱它。它通常发生在应用程序长时间运行并且没有正确响应但相关文件位于 /tmp 目录中时。

虽然我没有为广播声明任何变量,但可能是 spark 自己做的。

在我的情况下,当它尝试从 hdfs 加载 csv 时会发生错误。

我已为我的应用程序获取低级别日志,并附上以获取支持和建议/最佳实践,以便我可以解决问题。

样品(详情附here):

Traceback(最近一次调用最后一次):文件 “/home/hadoop/development/kpiengine.py”,第 258 行,在 df_ho_raw = sqlContext.read.format('com.databricks.spark.csv').options(header='true').load(HDFS_BASE_URL + HDFS_WORK_DIR + 文件名)文件“/usr/local/spark/python/lib/pyspark.zip/pyspark/sql/readwriter.py”, 第 147 行,在加载文件中 "/usr/local/spark/python/lib/py4j-0.10.1-src.zip/py4j/java_gateway.py", 第 933 行,在 call 文件中 “/usr/local/spark/python/lib/pyspark.zip/pyspark/sql/utils.py”,行 63,在装饰文件中 "/usr/local/spark/python/lib/py4j-0.10.1-src.zip/py4j/protocol.py", 第 312 行,在 get_return_value py4j.protocol.Py4JJavaError: 一个错误 调用 o44.load 时发生。 : org.apache.spark.SparkException: 作业因阶段失败而中止:阶段 0.0 中的任务 0 失败 4 次, 最近失败:在阶段 0.0 中丢失任务 0.3(TID 3, 172.26.7.192): java.io.IOException: org.apache.spark.SparkException: 获取失败 broadcast_1_piece0 of broadcast_1

【问题讨论】:

  • 有人可以帮忙吗?

标签: python-3.x apache-spark pyspark hadoop2 spark-csv


【解决方案1】:
  1. 你应该为你的类扩展 Serializable

  2. 你的代码框架错误,你可以测试一下

    $SPARK_HOME/examples/src/main/scala/org/apache/spark/examples/
    

如果没问题,你应该检查你的代码。

【讨论】:

  • 补充一点:sparkconfig和sparkcontext不需要序列化。在前面添加@transient 标识符。并在main方法外写
猜你喜欢
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 2020-11-03
  • 1970-01-01
  • 2018-04-22
  • 2013-06-25
  • 2014-09-15
  • 2017-04-24
相关资源
最近更新 更多