我正在使用 Python 3.4 在 Apache Spark 2.00 上构建一个应用程序,并尝试从 HDFS (Hadoop 2.7) 加载一些 CSV 文件并从这些 CSV 数据中处理一些 KPI。
我曾经在我的应用程序中随机遇到“无法获得broadcast_1_piece0 of broadcast_1”错误并且它停止了。
在搜索了很多 google 和 stakeoverflow 之后,我发现只有如何通过从 /tmp 目录中手动删除 spark 应用程序创建的文件来摆脱它。它通常发生在应用程序长时间运行并且没有正确响应但相关文件位于 /tmp 目录中时。
虽然我没有为广播声明任何变量,但可能是 spark 自己做的。
在我的情况下,当它试图从 hdfs 加载 csv 时会发生错误。
我已经为我的应用程序获取了低级别日志,并附上以获得支持和建议/最佳实践,以便我可以解决问题。
样品(详情附在此处):
回溯(最后一次调用):文件“/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 行,通话中 文件“/usr/local/spark/python/lib/pyspark.zip/pyspark/sql/utils.py”,第 63 行,在 deco 文件“/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 的 broadcast_1_piece0