如何在 Hive 中包含 jar(Amazon Hadoop env)

How to include jars in Hive (Amazon Hadoop env)

我需要在 Hive 中包含更新的 protobuf jar(比 2.5.0 更新)。不管我把罐子放在哪里,它都会被推到类路径的末尾。如何确保jar 位于Hive 类路径的开头?

要将您自己的 jar 添加到 Hive 类路径,以便它包含在类路径的开头并且不会被某些 hadoop jar 超载,您需要设置以下 Env 变量 -

export HADOOP_USER_CLASSPATH_FIRST=true

这表明 HADOOP_CLASSPATH 将获得比一般 hadoop jar 更高的优先级。

在 Amazon emr 实例中,您可以将此添加到 /home/hadoop/conf/hadoop-env.sh,并修改此文件中的类路径。

当您想要重载 hadoop 通用类路径附带的 jar(例如 protobuf)时,这很有用。

您可能考虑做的另一件事是在您的 jar 中包含 protobuf 类。您需要使用程序集插件构建您的 jar,这将是 类。这是一个选择。