2016-03-16 2 views
3

Я читаю текстовые файлы и преобразую их в файлы паркета. Я делаю это с использованием искрового кода. Но когда я пытаюсь запустить код я получаю следующее исключениеИсключение ошибки: задача не удалась при записи строк

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, ukfhpdbivp12.uk.experian.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 в следующем виде:

dataframe.write().parquet(Path) 

Любая помощь высоко ценится.

+1

Хм, да - я помню, как это работает. Я пытаюсь придумать, в чем проблема ... Какая версия Spark? Сколько у вас разделов? Вы работаете на AWS EMR и «Путь» каким-либо образом «s3n: // ...»? –

+0

Искры версии 1.4.1. Я запускаю это на обычном кластере с 5 узлами. Путь также нормальный путь hdfs. –

+1

можете ли вы попытаться выполнить действие на 'dataframe', которое вы хотите записать в паркет? (например, 'count'). Здесь есть объяснимое деление на ноль, которое нужно изолировать! – eliasah

ответ

1

Обнаружено, что недействительные спекуляции предотвращает эту ошибку. Я не очень уверен, почему. Кажется, что спекулятивные и неспекулятивные задачи конфликтуют при написании паркетных рядов.

sparkConf.set("spark.speculation","false") 
+0

Это не проблема выполнения спекуляций. Это была проблема не корректной генерации схемы и, следовательно,/Zero –

1

Другая возможная причина заключается в том, что вы нажимаете ограничения скорости запроса s3. Если вы внимательно посмотрите на ваши журналы, вы можете увидеть что-то вроде этого

AmazonS3Exception: Please reduce your request rate.

Хотя Спарк UI будет говорить

Task failed while writing rows

Сомневаюсь его причину вы получаете вопрос, но это возможная причина, если вы выполняете очень интенсивную работу. Поэтому я включил только для полноты ответа.

+1

Как вы справились с этой проблемой? – Edward

+0

Проблема «AmazonS3Exception: пожалуйста, уменьшите свой запрос»? –

0

Это то, где все источники в руке помогают: вставить трассировку стека в среду IDE, которая может перейти от трассировки стека к строкам кода и посмотреть, что он говорит. Вероятно, это просто проблема с init/config.

Смежные вопросы