mbi*_*ios 5 apache-spark aws-glue
我们正在为一个大数据项目评估 AWS Glue,其中包含一些 ETL。我们添加了一个爬虫,它可以正确地从 S3 中获取一个 CSV 文件。最初,我们只是想将该 CSV 转换为 JSON,然后将文件放到另一个 S3 位置(相同的存储桶,不同的路径)。
我们使用了 AWS 提供的脚本(此处没有自定义脚本)。并且只是映射了所有的列。
目标文件夹为空(作业刚刚创建),但作业失败并显示“文件已存在”: 此处为快照。在开始工作之前 ,我们假装丢弃输出的 S3 位置是空的。但是在错误之后我们确实看到了两个文件,但那些似乎是部分文件: 快照
关于可能发生什么的任何想法?
这是完整的堆栈:
容器:ip-172-31-49-38.ec2.internal_8041 上的 container_1513099821372_0007_01_000001
日志类型:标准输出
日志上传时间:2017 年 12 月 12 日星期二 19:12:04 +0000
日志长度:8462
日志内容:
回溯(最近一次调用最后一次):
文件“script_2017-12-12-19-11-08.py”,第 30 行,在
datasink2 =glueContext.write_dynamic_frame.from_options(frame = applymapping1, connection_type = "s3", connection_options =
{
“路径”:“s3://primero-viz/output/tcw_entries”
}
, format = "json",transformation_ctx = "datasink2")
文件“/mnt/yarn/usercache/root/appcache/application_1513099821372_0007/container_1513099821372_0007_01_000001/PyGlue.zip/awsglue/dynamicframe.py”,第523行,来自_options
文件“/mnt/yarn/usercache/root/appcache/application_1513099821372_0007/container_1513099821372_0007_01_000001/PyGlue.zip/awsglue/context.py”,第175行,来自write_options_frame,来自write_options_frame
文件“/mnt/yarn/usercache/root/appcache/application_1513099821372_0007/container_1513099821372_0007_01_000001/PyGlue.zip/awsglue/context.py”,第198行,在write_from_options
文件“/mnt/yarn/usercache/root/appcache/application_1513099821372_0007/container_1513099821372_0007_01_000001/PyGlue.zip/awsglue/data_sink.py”,在第32行中写入
文件“/mnt/yarn/usercache/root/appcache/application_1513099821372_0007/container_1513099821372_0007_01_000001/PyGlue.zip/awsglue/data_sink.py”,在第 28 行中写入
文件“/mnt/yarn/usercache/root/appcache/application_1513099821372_0007/container_1513099821372_0007_01_000001/py4j-0.10.4-src.zip/py4j/java_line1__13call, in__line1__3”
文件“/mnt/yarn/usercache/root/appcache/application_1513099821372_0007/container_1513099821372_0007_01_000001/pyspark.zip/pyspark/sql/utils.py”,第63行,deco
文件“/mnt/yarn/usercache/root/appcache/application_1513099821372_0007/container_1513099821372_0007_01_000001/py4j-0.10.4-src.zip/py4j/protocol_return_value”, in line get
py4j.protocol.Py4JJavaError:调用 o86.pyWriteDynamicFrame 时出错。
:org.apache.spark.SparkException:由于阶段失败而中止作业:阶段 0.0 中的任务 0 失败 4 次,最近失败:阶段 0.0 中丢失任务 0.3(TID 3,ip-172-31-63-141.ec2 .internal, executor 1): java.io.IOException: 文件已经存在:s3://primero-viz/output/tcw_entries/run-1513105898742-part-r-00000
在 com.amazon.ws.emr.hadoop.fs.s3n.S3NativeFileSystem.create(S3NativeFileSystem.java:604)
在 org.apache.hadoop.fs.FileSystem.create(FileSystem.java:915)
在 org.apache.hadoop.fs.FileSystem.create(FileSystem.java:896)
在 org.apache.hadoop.fs.FileSystem.create(FileSystem.java:793)
在 com.amazon.ws.emr.hadoop.fs.EmrFileSystem.create(EmrFileSystem.java:176)
在 com.amazonaws.services.glue.hadoop.TapeOutputFormat.getRecordWriter(TapeOutputFormat.scala:65)
在 org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsNewAPIHadoopDataset$1$$anonfun$12.apply(PairRDDFunctions.scala:1119)
在 org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsNewAPIHadoopDataset$1$$anonfun$12.apply(PairRDDFunctions.scala:1102)
在 org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:87)
在 org.apache.spark.scheduler.Task.run(Task.scala:99)
在 org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:282)
在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
在 java.lang.Thread.run(Thread.java:748)
驱动程序堆栈跟踪:
在 org.apache.spark.scheduler.DAGScheduler.org$apache$spark$scheduler$DAGScheduler$$failJobAndIndependentStages(DAGScheduler.scala:1435)
在 org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1423)
在 org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1422)
在 scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
在 scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)
在 org.apache.spark.scheduler.DAGScheduler.abortStage(DAGScheduler.scala:1422)
在 org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1.apply(DAGScheduler.scala:802)
在 org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1.apply(DAGScheduler.scala:802)
在 scala.Option.foreach(Option.scala:257)
在 org.apache.spark.scheduler.DAGScheduler.handleTaskSetFailed(DAGScheduler.scala:802)
在 org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.doOnReceive(DAGScheduler.scala:1650)
在 org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.onReceive(DAGScheduler.scala:1605)
在 org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.onReceive(DAGScheduler.scala:1594)
在 org.apache.spark.util.EventLoop$$anon$1.run(EventLoop.scala:48)
在 org.apache.spark.scheduler.DAGScheduler.runJob(DAGScheduler.scala:628)
在 org.apache.spark.SparkContext.runJob(SparkContext.scala:1918)
在 org.apache.spark.SparkContext.runJob(SparkContext.scala:1931)
在 org.apache.spark.SparkContext.runJob(SparkContext.scala:1951)
在 org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsNewAPIHadoopDataset$1.apply$mcV$sp(PairRDDFunctions.scala:1158)
在 org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsNewAPIHadoopDataset$1.apply(PairRDDFunctions.scala:1085)
在 org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsNewAPIHadoopDataset$1.apply(PairRDDFunctions.scala:1085)
在 org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:151)
在 org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:112)
在 org.apache.spark.rdd.RDD.withScope(RDD.scala:362)
在 org.apache.spark.rdd.PairRDDFunctions.saveAsNewAPIHadoopDataset(PairRDDFunctions.scala:1085)
在 org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsNewAPIHadoopFile$2.apply$mcV$sp(PairRDDFunctions.scala:1005)
在 org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsNewAPIHadoopFile$2.apply(PairRDDFunctions.scala:996)
在 org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsNewAPIHadoopFile$2.apply(PairRDDFunctions.scala:996)
在 org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:151)
在 org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:112)
在 org.apache.spark.rdd.RDD.withScope(RDD.scala:362)
在 org.apache.spark.rdd.PairRDDFunctions.saveAsNewAPIHadoopFile(PairRDDFunctions.scala:996)
在 com.amazonaws.services.glue.HadoopDataSink$$anonfun$2.apply$mcV$sp(DataSink.scala:192)
在 com.amazonaws.services.glue.HadoopDataSink.writeDynamicFrame(DataSink.scala:202)
在 com.amazonaws.services.glue.DataSink.pyWriteDynamicFrame(DataSink.scala:48)
在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
在 java.lang.reflect.Method.invoke(Method.java:498)
在 py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)
在 py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357)
在 py4j.Gateway.invoke(Gateway.java:280)
在 py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
在 py4j.commands.CallCommand.execute(CallCommand.java:79)
在 py4j.GatewayConnection.run(GatewayConnection.java:214)
在 java.lang.Thread.run(Thread.java:748)
引起:java.io.IOException:文件已经存在:s3://primero-viz/output/tcw_entries/run-1513105898742-part-r-00000
| 归档时间: |
|
| 查看次数: |
2464 次 |
| 最近记录: |