带有Parquet文件的hive中的java内存问题

dgiusagp  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(373)

我正在hadoop2.6上运行hive1.2,并且在3个节点上加载了一个大小为21gb的Parquet表,存储在hdfs中,复制因子为1。我正在运行一个简单的选择查询,它不返回任何行(主要是为了测量完整表扫描的性能):

select * from myParquetTable where id < 0;

但我一直从“parquetfilereader”(接近map-only作业的末尾)得到java堆空间内存问题:
java.lang.outofmemoryerror:parquet.hadoop.parquetfilereader$consutivechunklist.readall(parquetfilereader)处的java堆空间。java:755)在parquet.hadoop.parquetfilereader.readnextrowgroup(parquetfilereader。java:494)在parquet.hadoop.internalparquetrecordreader.checkread(internalparquetrecordreader。java:127)
虽然数据的总大小是21gb,但我在所有3个节点上总共有31.5gb的可用内存。我只是想知道Parquet文件是否有高内存消耗的问题,并需要大量的内存可用于简单/完整的扫描,或其他东西是缺少这里(我对Parquet文件非常陌生,我以前在同一硬件上使用orc格式甚至更大的数据大小的经验是成功的)。
任何建议/暗示都将不胜感激。

pokxtpni

pokxtpni1#

你需要记住两件事:1。Parquet地板是一种柱状的储存材料。2Parquet文件被压缩。
好吧,考虑到这一点,这些文件将占用更多的空间比原来的一次泄气。但是,您拥有的内存足以处理该文件(在本例中是完整的文件)。
因为,它会导致堆空间内存不足错误—您可能需要增加节点管理器的java堆大小。另外,您可能需要检查每个容器配置了多少内存,以及所有容器的总内存。
您可能想查看的另一个属性是hive客户机的java堆大小。

相关问题