【发布时间】:2016-07-02 06:55:41
【问题描述】:
我正在阅读文本文件并将它们转换为镶木地板文件。我正在使用火花代码进行操作。但是当我尝试运行代码时,我得到以下异常
org.apache.spark.SparkException: Job aborted due to stage failure: Task 2 in stage 1.0 failed 4 times, most recent failure: Lost task 2.3 in stage 1.0 (TID 9, XXXX.XXX.XXX.local): org.apache.spark.SparkException: Task failed while writing rows.
at org.apache.spark.sql.sources.InsertIntoHadoopFsRelation.org$apache$spark$sql$sources$InsertIntoHadoopFsRelation$$writeRows$1(commands.scala:191)
at org.apache.spark.sql.sources.InsertIntoHadoopFsRelation$$anonfun$insert$1.apply(commands.scala:160)
at org.apache.spark.sql.sources.InsertIntoHadoopFsRelation$$anonfun$insert$1.apply(commands.scala:160)
at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:63)
at org.apache.spark.scheduler.Task.run(Task.scala:70)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:213)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ArithmeticException: / by zero
at parquet.hadoop.InternalParquetRecordWriter.initStore(InternalParquetRecordWriter.java:101)
at parquet.hadoop.InternalParquetRecordWriter.<init>(InternalParquetRecordWriter.java:94)
at parquet.hadoop.ParquetRecordWriter.<init>(ParquetRecordWriter.java:64)
at parquet.hadoop.ParquetOutputFormat.getRecordWriter(ParquetOutputFormat.java:282)
at parquet.hadoop.ParquetOutputFormat.getRecordWriter(ParquetOutputFormat.java:252)
at org.apache.spark.sql.parquet.ParquetOutputWriter.<init>(newParquet.scala:83)
at org.apache.spark.sql.parquet.ParquetRelation2$$anon$4.newInstance(newParquet.scala:229)
at org.apache.spark.sql.sources.DefaultWriterContainer.initWriters(commands.scala:470)
at org.apache.spark.sql.sources.BaseWriterContainer.executorSideSetup(commands.scala:360)
at org.apache.spark.sql.sources.InsertIntoHadoopFsRelation.org$apache$spark$sql$sources$InsertIntoHadoopFsRelation$$writeRows$1(commands.scala:172)
... 8 more
我正在尝试以下列方式编写数据帧:
dataframe.write().parquet(Path)
非常感谢任何帮助。
【问题讨论】:
-
嗯,是的 - 我记得碰到过这个。我试图思考问题出在哪里……哪个版本的 Spark?你有多少个分区?您是否在 AWS EMR 上运行,并且是
Path很可能是“s3n://...”? -
Spark 版本为 1.4.1。我在普通的 5 节点 hadoop 集群上运行它。路径也是普通的hdfs路径。
-
您可以尝试对您想要写入 parquet 的
dataframe执行操作吗? (例如count)我们需要隔离的地方有一个可以解释的除以零! -
哦,我完全错过了
ArithmeticException(感谢重新格式化@eliasah :))。在那种情况下,这对我来说不是一个熟悉的问题,我同意@eliasah 的评论。 -
@GlennieHellesSindholt 我已经开发出一种模式识别能力。重新格式化也有帮助! :))
标签: java hadoop apache-spark apache-spark-sql parquet