【问题标题】:Adding hive jars permanently永久添加蜂巢罐
【发布时间】:2015-08-04 07:13:54
【问题描述】:

有什么方法可以永久添加 hive jar,而不是在 hive shell 中的会话级别添加?

任何帮助将不胜感激

【问题讨论】:

  • 您是指用于自定义 UDF 的 JAR 吗?
  • 查询所需的任何 jar ..like csv-serde jar 用于将 csv 文件加载到表中

标签: hadoop hive


【解决方案1】:

在 hiveserver2 主机中,创建一个类似 /var/lib/hive 的位置,并在该文件夹中添加所有必要的 jar。编辑 hive-site.xml 并在属性 hive.aux.jars.path

中提及所有这些 jar

例如: ADD JAR /home/amal/hive/amaludf.jar ADD JAR /home/amal/hive/amaludf2.jar

您可以为所有会话定义它,而不是在每个会话中使用上述命令。

在 hiveserver 主机中创建用于存储这些 jar 的位置。

mkdir /var/lib/hive

将所有这些 jars 添加到该目录

hive-site.xml中设置属性

<property>
  <name>hive.aux.jars.path</name>
  <value>/var/lib/hive</value>
</property>

修改后重启hiveserver2。

您也可以指定单个 jar 的路径,而不是创建一个目录并放置所有 jar。唯一的条件是所有这些 jar 都应该存在于 hiveserver 主机中。

例如:

<property>
  <name>hive.aux.jars.path </name>
  <value>file:///home/amal/hive/udf1.jar,file:///usr/lib/hive/lib/hive-hbase-handler.jar</value>
</property>

【讨论】:

    【解决方案2】:

    您必须将 jar 放入 hadoop 的 lib 文件夹或 all 节点中的 hive。

    【讨论】:

      【解决方案3】:

      这些可以分两步完成

      1. Hive 客户端应在所有节点中可用。
      2. 应在 hadoop-env.sh CLASSPATH 中定义 Hive Live 位置,并应在整个 Hadoop Clueter 中更新相同的文件。

      {hadoop-env.sh 应该使用 hive 的 CLASSPATH 和用户定义的自定义 jar 的其他位置以及整个集群中可用的公共位置进行更新}

      如果更改后无法正常工作,您还需要重新启动 hive/hadoop 才能生效。

      【讨论】:

        【解决方案4】:

        在 $HIVE_HOME 中创建名为 auxlib 的目录,将所有 jar 放入此目录并重新启动 hive 服务器。运行ps -ef | grep hive这个命令列出hive进程,搜索hive.aux.jars.path,你会看到你所有的jars都将在这个hiveconf中列出。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-02-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-02-12
          • 1970-01-01
          相关资源
          最近更新 更多