我们正在存储字符串字段,其长度从小(几kB)到很长(< 400MB)在HIVE表中变化。现在,当将数据从一个表复制到另一个表时(没有任何条件或联接)时,我们正面临着OOM问题,这不完全是我们在生产中运行的,但它是出现此问题的最简单用例。所以HQL基本上是:HIVE很长的字段给出了OOM堆
INSERT INTO new_table
SELECT * FROM old_table;
容器和Java堆设置为16GB,我们曾尝试不同的文件格式(RCFile,ORC),有和没有压缩,不同的发动机(MR,TEZ)等,但没有任何帮助,我们总是碰到OOM。
我们不确定那里发生了什么。我们期待Java进程只需要几倍单记录最大长度的内存,这是大约400M,但不是整个16GB堆。
你能给我们一些我们应该尝试或关注的东西吗?使用
版本:2.4.2 HDP
示例日志使用的RAM TEZ + ORC + 8G时:https://pastebin.com/uza84t6F
请附上错误日志和蜂巢参数。 – leftjoin
编辑,附上TEZ + ORC + 8G RAM的样本日志 – Martin