问题:如何将 hive 辅助 jar 添加到 Dataproc 集群

当您在 Dataproc 中启动配置单元会话时,您可以添加位于 gcs 存储桶中的 jar。

add jar gs://my-bucket/serde.jar;

我不想每次启动 hive 会话时都添加我需要的所有 jar,所以我尝试在 hive.aux.jars.path 属性中将 jar 路径添加到 hive-site.xml。

<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 存储桶中的自定义 jars 添加到 hive 类路径中,或者我必须从存储桶中复制 jars 并在每次创建 dataproc 集群时更新 hive.aux.jars.path ?

*编辑

即使添加了以下属性并重新启动配置单元,我仍然会收到相同的错误。

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

解答

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

解决方法是使用Dataproc 初始化操作将 jar 从 GCS 复制到所有 Dataproc 集群节点上的相同本地 FS 路径,并将此本地路径指定为hive.aux.jars.path属性的值。

更新

HIVE-18871 修复已将反向移植到 Dataproc1.3+ 图像,因此您可以将hive.aux.jars.path属性中的 GCS URI 与具有此修复的新 Dataproc 图像一起使用。

Logo

华为、百度、京东云现已入驻,来创建你的专属开发者社区吧!

更多推荐