AWS EMR - 在S3上将Dataframe保存到hive外部表 - 导致内存泄漏错误

时间:2018-03-29 02:47:47

标签: amazon-web-services apache-spark amazon-s3 memory-leaks emr

您好我正在使用python编写spark并将数据帧写入表中,表格是hive外部并存储在AWS S3上

下面是命令:    sqlContext.sql(selectQuery).write.mode(" overwrite")。format(trgFormat).option(" compression",trgCompression).save(trgDataFileBase)

以下是错误

ERROR ResourceLeakDetector:LEAK:ByteBuf.release()在被垃圾收集之前没有被调用。启用高级泄漏报告以找出泄漏发生的位置。要启用高级泄漏报告,请指定JVM选项' -Dio.netty.leakDetection.level = advanced'或者调用ResourceLeakDetector.setLevel()有关详细信息,请参阅http://netty.io/wiki/reference-counted-objects.html

火花总和: spark-submit --master yarn --queue default --deploy-mode client --num-executors 10 --executor-memory 12g --executor-cores 2 --conf spark.debug.maxToStringFields = 100 --conf spark。 yarn.executor.memoryOverhead = 2048

1 个答案:

答案 0 :(得分:0)

创建一个临时表,例如trgDataFileBasetmp,然后使用相同的定义在s3上创建该表。您将需要定义中的所有参数,例如SERDEPROPERTIESTBLPROPERTIES。在这里,我的区别是saveAsTable

sqlContext.sql(selectQuery).write.mode("overwrite").format(trgFormat).option("compression", trgCompression).saveAsTable(trgDataFileBase)

如果这不起作用,那么您可以开始:

sqlContext.sql(selectQuery).write.mode("overwrite").saveAsTable(trgDataFileBase)