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 上创建表。您将需要定义中的所有参数,例如SERDEPROPERTIES
、TBLPROPERTIES
。这里我的区别是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 数据帧