Hive报错

主要是因为粗心导致的

报错信息

Exception in thread “main” java.lang.RuntimeException: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character ‘l’ (code 108) in prolog; expected ‘<’
at [row,col,system-id]: [1,4,“file:/home/export/servers/apache-hive-3.1.2-bin/conf/hive-site.xml”]
at org.apache.hadoop.conf.Configuration.loadResource(Configuration.java:3092)
at org.apache.hadoop.conf.Configuration.loadResources(Configuration.java:3041)
at org.apache.hadoop.conf.Configuration.loadProps(Configuration.java:2914)
at org.apache.hadoop.conf.Configuration.addResourceObject(Configuration.java:1034)
at org.apache.hadoop.conf.Configuration.addResource(Configuration.java:939)
at org.apache.hadoop.hive.conf.HiveConf.initialize(HiveConf.java:5151)
at org.apache.hadoop.hive.conf.HiveConf.(HiveConf.java:5099)
at org.apache.hadoop.hive.common.LogUtils.initHiveLog4jCommon(LogUtils.java:97)
at org.apache.hadoop.hive.common.LogUtils.initHiveLog4j(LogUtils.java:81)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:699)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:683)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.hadoop.util.RunJar.run(RunJar.java:323)
at org.apache.hadoop.util.RunJar.main(RunJar.java:236)
Caused by: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character ‘l’ (code 108) in prolog; expected ‘<’
at [row,col,system-id]: [1,4,“file:/home/export/servers/apache-hive-3.1.2-bin/conf/hive-site.xml”]
at com.ctc.wstx.sr.StreamScanner.throwUnexpectedChar(StreamScanner.java:666)
at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2130)
at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1179)
at org.apache.hadoop.conf.Configuration P a r s e r . p a r s e N e x t ( C o n f i g u r a t i o n . j a v a : 3396 ) a t o r g . a p a c h e . h a d o o p . c o n f . C o n f i g u r a t i o n Parser.parseNext(Configuration.java:3396) at org.apache.hadoop.conf.Configuration Parser.parseNext(Configuration.java:3396)atorg.apache.hadoop.conf.ConfigurationParser.parse(Configuration.java:3182)
at org.apache.hadoop.conf.Configuration.loadResource(Configuration.java:3075)
… 16 more

原因

生成hive-site.xml的过程中使用了hive-default.xml.template导致后续的很多默认设置有问题。

解决办法

直接删掉hive-site.xml,新建hive-site.xml并导如下设置:

<configuration>

<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
 
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
 
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>mysql用户名</value>
<description>username to use against metastore database</description>
</property>
 
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>mysql密码</value>
</property>

<property>
   <name>hive.metastore.uris</name>
   <value>thrift://master:9083</value>
</property>
</configuration>

上面的代码小心复制,多个空格都不行~