gpt4 book ai didi

java - Hive 导入失败 [java.lang.OutOfMemoryError]

转载 作者:行者123 更新时间:2023-11-30 02:27:48 24 4
gpt4 key购买 nike

我正在使用 bash 命令将 sql 数据库导入到 hive 客户端节点上的 hive 数据库(使用 Hortonworks 数据平台):

$ hive -f tables.sql

我收到错误:

log4j:WARN No such property [maxFileSize] in org.apache.log4j.DailyRollingFileAppender.

Logging initialized using configuration in file:/etc/hive/2.6.1.0-129/0/hive-log4j.properties
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:3332)
at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:124)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:448)
at java.lang.StringBuilder.append(StringBuilder.java:136)
at org.apache.hadoop.hive.cli.CliDriver.processReader(CliDriver.java:409)
at org.apache.hadoop.hive.cli.CliDriver.processFile(CliDriver.java:429)
at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:718)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:685)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:625)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.hadoop.util.RunJar.run(RunJar.java:233)
at org.apache.hadoop.util.RunJar.main(RunJar.java:148)

我尝试将 HADOOP_HEAPSIZE 从 1GB 增加到 4GB,但仍然收到错误。有什么想法吗?

最佳答案

OutOfMemoryError 来自 CliDriver#processReader(BufferedReader) 中的 Hive 代码库.

public int processReader(BufferedReader r) throws IOException {
String line;
StringBuilder qsb = new StringBuilder();

while ((line = r.readLine()) != null) {
// Skipping through comments
if (! line.startsWith("--")) {
qsb.append(line + "\n");
}
}

return (processLine(qsb.toString()));
}

它将将从文件读取的所有行添加到 StringBuilder 中,然后执行它。这必定意味着您指定的输入文件非常大。是否可以将其拆分为多个较小的文件并单独执行,从而减少内存占用?

您提到这是 SQL 数据库的导入。 Apache Sqoop可能更适合该用例。

关于java - Hive 导入失败 [java.lang.OutOfMemoryError],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45190894/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com