如何将 Hive 辅助 jar 添加到 Dataproc 集群

How to add hive auxiliary jars to Dataproc cluster

当您在 Dataproc 中启动配置单元会话时,您可以添加 gcs 存储桶中的 jar。
add jar gs://my-bucket/serde.jar;

我不想在每次启动配置单元会话时都添加我需要的所有 jar,所以我尝试将 jar 路径添加到 hive.aux.jars.path [=] 中的 hive-site.xml 30=].

<property>
  <name>hive.aux.jars.path</name>
  <value>gs://my-bucket/serde.jar</value>
</property>

然后我在尝试启动配置单元会话时遇到此错误。
Exception in thread "main" java.lang.IllegalArgumentException: Wrong FS: file://gs, expected: file:///

有没有办法将 gcs 存储桶中的自定义 jar 添加到 hive 类路径,或者我是否必须从存储桶中复制 jar 并在每次创建 dataproc 集群时更新 hive.aux.jars.path?

*编辑
即使在添加以下 属性 并重新启动配置单元后,我仍然遇到相同的错误。

  <property>
    <name>hive.exim.uri.scheme.whitelist</name>
    <value>hdfs,pfile,gs</value>
    <final>false</final>
  </property>

我想您还需要将 属性 hive.exim.uri.scheme.whitelist 设置为将 gcs uri 列入白名单。

所以在您的情况下,在创建 Dataproc 集群时,设置属性

hive.aux.jars.path = gs://my-bucket/serde.jar
hive.exim.uri.scheme.whitelist = hdfs,pfile,gs

这是一个已知的 Hive 错误 (HIVE-18871) - hive.aux.jars.path 在 Hive 3.1 及更低版本中仅支持本地路径。

解决方法是使用 Dataproc initialization action 将 jar 从 GCS 复制到所有 Dataproc 集群节点上的同一本地 FS 路径,并将此本地路径指定为 hive.aux.jars.path 属性.

更新

HIVE-18871 修复是 back ported to Dataproc 1.3+ 图像,因此您可以将 hive.aux.jars.path 属性 中的 GCS URI 与具有此修复的新 Dataproc 图像一起使用。