AWS EMR - 将数据帧保存到 S3 上的配置单元外部表中 - 出现内存泄漏错误

Posted

技术标签:

【中文标题】AWS EMR - 将数据帧保存到 S3 上的配置单元外部表中 - 出现内存泄漏错误【英文标题】:AWS EMR - Saving Dataframe into hive external table on S3 - getting memory leak error 【发布时间】:2018-03-29 02:47:47 【问题描述】:

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

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

下面是错误

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

spark sumit: 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】:

创建一个临时表,比如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)

【讨论】:

以上是关于AWS EMR - 将数据帧保存到 S3 上的配置单元外部表中 - 出现内存泄漏错误的主要内容,如果未能解决你的问题,请参考以下文章

无法从 S3 读取 csv 到 AWS 上 EC2 实例上的 pyspark 数据帧

AWS EMR 上的奇怪火花错误

使用 sqoop 将选定数据从 oracle db 导入 S3,并在 AWS EMR 上使用选定数据创建配置单元表脚本

AWS EMR 性能 HDFS 与 S3

AWS EMR性能HDFS与S3

[AWS][大数据][Hadoop] 使用EMR做大数据分析