【发布时间】:2015-07-30 02:06:03
【问题描述】:
我在 Hadoop 2.6 上运行 Hive 1.2,我已经加载了一个大小为 21GB 的 parquet 表,存储在 HDFS 中,复制因子为 1,在 3 个节点上。 我正在运行一个简单的选择查询,它不返回任何行(主要是衡量全表扫描的性能):
select * from myParquetTable where id < 0;
但我不断收到来自“ParquetFileReader”的 Java 堆空间内存问题(接近仅映射作业的结尾):
java.lang.OutOfMemoryError:Java 堆空间 在 parquet.hadoop.ParquetFileReader$ConsecutiveChunkList.readAll(ParquetFileReader.java:755) 在 parquet.hadoop.ParquetFileReader.readNextRowGroup(ParquetFileReader.java:494) 在 parquet.hadoop.InternalParquetRecordReader.checkRead(InternalParquetRecordReader.java:127)
虽然数据的总大小为 21GB,但我在所有 3 个节点上共有 31.5GB 的可用内存。我只是想知道 Parquet 文件是否存在高内存消耗问题,并且需要大量内存用于简单/完整扫描,或者这里缺少其他东西。 (我对 parquet 文件还很陌生,我之前在 ORC 格式和相同硬件上更大数据量的经验是成功的)。
任何建议/提示将不胜感激。
【问题讨论】:
标签: java hadoop hive heap-memory parquet