java.net.URISyntaxException 当启动 HIVE 时



我是HIVE的新手。我已经设置了Hadoop并且运行良好,我想设置Hive。当我启动 hive 时,它显示错误为

Caused by: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D

有什么解决办法吗?

将以下内容放在 hive-site 的开头.xml

  <property>
    <name>system:java.io.tmpdir</name>
    <value>/tmp/hive/java</value>
  </property>
  <property>
    <name>system:user.name</name>
    <value>${user.name}</value>
  </property>

另请参阅问题

hfs-site 中的更改.xml此属性

<name>hive.exec.scratchdir</name>
<value>/tmp/hive-${user.name}</value>
 <name>hive.exec.local.scratchdir</name>
 <value>/tmp/${user.name}</value>
<name>hive.downloaded.resources.dir</name>
<value>/tmp/${user.name}_resources</value>
<name>hive.scratch.dir.permission</name>
    <value>733</value>

重新启动 Hive 元存储和 HiveServer2

我自己想办法。在 hive-site.xml 中,将 ${system:java.io.tmpdir}/${system:user.name} 替换为/tmp/mydir,如 https://cwiki.apache.org/confluence/display/Hive/AdminManual+Configuration 中所说的那样。

线程

"main"中的异常 java.lang.IllegalArgumentException: java.net.URISyntaxException: 绝对 URI 中的相对路径: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D系统:java.io.tmpdir - path
系统:用户名 - 用户名

以上属性是需要由用户设置的系统级属性,因此 hive 站点模板不提供这些,需要手动配置。

设置上述属性,例如在 hive-site.xml 中使用带有名称值键对的属性标签,由用户级别选择临时位置

<property>
    <name>system:java.io.tmpdir</name>
    <value>/user/local/hive/tmp/java</value>
  </property>
  <property>
    <name>system:user.name</name>
    <value>${user.name}</value>
  </property>

hive-site中添加属性.xml

<configuration>
<property>
  <name>hive.metastore.schema.verification</name>
  <value>false</value>
  <description>Will remove your error occurring because of metastore_db in shark</description>
</property>
</configuration>

根据您的系统在 hive-env.sh 中添加Java和Hadoop路径。

# Set HADOOP_HOME to point to a specific hadoop install directory
export HADOOP_HOME=/home/user17/BigData/hadoop
#hive 
export HIVE_HOME=/home/user17/BigData/hive
# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=$HIVE_HOME/conf

并在 .bashrc 中设置 Hive 和 Hadoop 路径

export JAVA_HOME=/home/user17/jdk
export PATH=$PATH:$JAVA_HOME/bin
export HADOOP_INSTALL=/home/user17/BigData/hadoop
export PATH=$PATH:$HADOOP_INSTALL/bin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
export HIVE_INSTALL=/home/user17/BigData/hive
export PATH=$PATH:$HIVE_INSTALL/bin

注意 - 所有文件路径都是根据我的系统设置的,您应该根据您的系统提供路径。如果不起作用,请告诉我

我在为 Hbase 启动 HMaster 时也遇到了同样的错误。这已通过指定HDFS上要存储在HBase-site的HBase.rootdir属性中的目录的路径来纠正.xml早些时候我只使用相对路径。

导致异常的路径:hdfs://localhost:8020

正确路径 : hdfs://localhost:8020/hbase

在 hive-site 中也更新本地:/tmp 绝对临时路径.xml因为它不会自动选择,所以我手动添加了属性:(hive.exec.local.scratchdir 和 hive.downloaded.resources.dir

<property>
    <name>hive.exec.local.scratchdir</name>
    <value>/tmp/${user.name}</value>
    <description>Local scratch space for Hive jobs</description>
  </property>
  <property>
    <name>hive.downloaded.resources.dir</name>
    <value>/tmp/${hive.session.id}_resources</value>
    <description>Temporary local directory for added resources in the remote file system.</description>
  </property>

现在它正在工作。

最新更新