【问题标题】:java.net.URISyntaxException when starting HIVE启动 HIVE 时出现 java.net.URISyntaxException
【发布时间】:2015-01-21 20:58:08
【问题描述】:

我是 HIVE 的新手。 我已经设置了hadoop并且效果很好,我想设置Hive。 当我启动 hive 时,它​​显示错误为

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

有什么解决办法吗?

【问题讨论】:

  • 你能粘贴你的 hbase-site.xml 和 core-site.xml

标签: hadoop hive


【解决方案1】:

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

以上属性为系统级属性,需要用户自行设置,所以hive站点模板没有提供这些,需要手动配置。

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

<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>

【讨论】:

    【解决方案2】:

    将以下内容放在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>
    

    另见question

    【讨论】:

    • 这应该被标记为答案。
    • 这就是解决方案。 @Exia 这应该被标记为答案。
    • @Igor - 如果我没记错的话,我当时查看了日志文件,发现这两个属性值应该是在启动HIVE时定义的
    • @JonathanL,仍然返回错误:java.lang.RuntimeException:无法创建目录/tmp/hive/java/1eb3bb53-f740-4753-996b-b53483ffa531_resources
    【解决方案3】:

    我在为 Hbase 启动 HMaster 时也遇到了同样的错误。 这已通过在 hbase-site.xml 的 hbase.rootdir 属性中指定要在其中存储 hbase 数据的 hdfs 上的目录路径得到纠正 之前我只使用相对路径。

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

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

    【讨论】:

      【解决方案4】:

      在 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 metastore 和 hiveserver2

      【讨论】:

      • ${user.name} 绝对是最好的正确答案。让您想知道为什么 hive 开发人员破坏了 ${system:user.name} 语法。
      • 我在 hive-site.xml 中进行了上述更改(在 mac 上)。谢谢:)
      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

        在 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
        

        注意——这里所有的文件路径都是根据我的系统设置的,你应该根据你的系统给出路径。 如果不起作用,请告诉我

        【讨论】:

          猜你喜欢
          • 2017-11-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-31
          • 2019-01-30
          相关资源
          最近更新 更多