Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache Spark:零输入的任务需要很长时间才能完成_Apache_Apache Spark_Apache Spark Sql_Bigdata - Fatal编程技术网

Apache Spark:零输入的任务需要很长时间才能完成

Apache Spark:零输入的任务需要很长时间才能完成,apache,apache-spark,apache-spark-sql,bigdata,Apache,Apache Spark,Apache Spark Sql,Bigdata,火花2.2 我有一个spark任务,它从HDFS读取压缩数据,应用ETL逻辑并将输出写回HDFS。但是,当我在spark UI中看到任务级数据时,有些任务的输入记录/大小标记为0.0B/6(即0.0B/N,其中N应用UDF和过滤器-->写为parquet@SaurabhAgrawal嗯,你说这是标准的,但你看到的是你以前从未见过的东西。如果没有代码(至少用于读取)和数据在磁盘上的布局描述(文件数量、格式),我只能说我在上面做了什么。

火花2.2

我有一个spark任务,它从HDFS读取压缩数据,应用ETL逻辑并将输出写回HDFS。但是,当我在spark UI中看到任务级数据时,有些任务的输入记录/大小标记为0.0B/6(即0.0B/N,其中N<100)。此外,该阶段中具有XX MB等输入的所有其他任务在某个时间内成功完成,但输入为0.0B的任务将永远运行,从而使spark作业永远运行

我知道数据倾斜会使1个分区比其他分区大,并导致任务混乱。然而,我看到了相反的行为——输入为100MB/500MB的任务正在完成,而输入为0.0B的任务则处于挂起状态

你见过这种行为吗?我应该如何调试和解决该问题?感谢您的帮助。谢谢大家!

例如Spark用户界面数据:

Task ID ▴   Address         Status          Input Size / Records  Task Duration
 1          machine:xxxx     Completed         37.0 MB / 63106       2Min 5Sec
 2          machine:xxxx     Running           0.0 B / 64068         20Hrs 50Sec
 3          machine:xxxx     Running           0.0 B / 65045         20Hrs 50Sec
 4          machine:xxxx     Completed         38.1 MB / 64255       3Mins 7Sec
 5          machine:xxxx     Completed         52.3 MB / 82091       9Mins 3Sec
 6          machine:xxxx     Completed         49.1 MB / 79232       10Mins 6Sec
 7          machine:xxxx     Running           0.0 B / 48337         20Hrs 50Sec
 8          machine:xxxx     Running           0.0 B / 59438         20Hrs 50Sec


通常情况下,这是因为spark在开始实际读取数据之前做了很长时间的工作。通常,您可以通过递归搜索一个非常大的文件系统或枚举速度较慢的文件系统来触发这种行为。类似地,等待非集群数据库可能会导致这种行为。没有看到你的代码,很难说更多

试着在单核上运行代码进行调试,可能是因为您没有使用线程安全的代码,而您的作业处于争用状态。类似这样的内容:

谢谢您的评论。代码中没有什么特别之处,它的标准数据工程读取原始数据(~100GB压缩)->应用UDF和过滤器-->写为parquet@SaurabhAgrawal嗯,你说这是标准的,但你看到的是你以前从未见过的东西。如果没有代码(至少用于读取)和数据在磁盘上的布局描述(文件数量、格式),我只能说我在上面做了什么。