Hive:FAILED:SemanticException [错误10001]:第1:14行未找到表'字段'

时间:2015-08-09 06:49:27

标签: hadoop hive

有!      我是樱桃!最近一个问题总是困扰我很多时间!

    > use test;
OK
Time taken: 0.046 seconds
hive> show tables;
OK
detectionindex
field
first1
galspecline
neighbors
photoobjall
photoz
spplines
sppparams
thingindex
zoonospec
Time taken: 0.092 seconds, Fetched: 11 row(s)

当我运行以下命令时:

hive -e "use test;"
hive -e "SELECT * from Field;"

它显示:

FAILED: SemanticException [Error 10001]: Line 1:31 Table not found 'Field'
  • hive.log在这里:

ERROR [main]:ql.Driver(SessionState.java:printError(960)))FAILED:SemanticException [错误10001]:第1:14行未找到表'字段' org.apache.hadoop.hive.ql.parse.SemanticException:第1:14行未找到表'字段'     在org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.getMetaData(SemanticAnalyzer.java:1868)     在org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.getMetaData(SemanticAnalyzer.java:1545)     at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genResolvedParseTree(SemanticAnalyzer.java:10077)     在org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:10128)     在org.apache.hadoop.hive.ql.parse.CalcitePlanner.analyzeInternal(CalcitePlanner.java:209)     在org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:227)     在org.apache.hadoop.hive.ql.Driver.compile(Driver.java:424)     在org.apache.hadoop.hive.ql.Driver.compile(Driver.java:308)     在org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1122)     在org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1170)     在org.apache.hadoop.hive.ql.Driver.run(Driver.java:1059)     在org.apache.hadoop.hive.ql.Driver.run(Driver.java:1049)     在org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:213)     在org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:165)     在org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:376)     在org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:311)     在org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:708)     在org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:681)     在org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:621)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.lang.reflect.Method.invoke(Method.java:606)     在org.apache.hadoop.util.RunJar.run(RunJar.java:221)     在org.apache.hadoop.util.RunJar.main(RunJar.java:136) 引起:org.apache.hadoop.hive.ql.parse.SemanticException:第1:14行未找到表'字段'     在org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.getMetaData(SemanticAnalyzer.java:1594)     ......还有24个

2015-08-09 14:43:23,697 INFO [main]:log.PerfLogger(PerfLogger.java:PerfLogEnd(148)) - 2015-08-09 14:43:23,698 INFO [main]:log.PerfLogger(PerfLogger.java:PerfLogBegin(121)) - 2015-08-09 14:43:23,698 INFO [main]:log.PerfLogger(PerfLogger.java:PerfLogEnd(148)) - 2015-08-09 14:43:23,704 INFO [main]:log.PerfLogger(PerfLogger.java:PerfLogBegin(121)) - 2015-08-09 14:43:23,704 INFO [main]:log.PerfLogger(PerfLogger.java:PerfLogEnd(148)) -

我的hive-site.xml在这里:

<property>
  <name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost: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>hive</value>
  </property>
<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>hive</value>
</property>

    </configuration>

请帮帮我!谢谢!

4 个答案:

答案 0 :(得分:4)

每个hive -e命令行启动自己的Java VM,执行作为参数传递的指令,然后关闭。

不同的执行,不同的会话,没有先前查询的记忆。

尝试改为

  

hive -e &#34;使用测试;从字段&#34;

中选择*

  

hive -e &#34;从test.Field&#34;

中选择*

答案 1 :(得分:0)

尝试:

hive -e "use test"
hive -e "SELECT * from Field"

答案 2 :(得分:0)

我意识到这是旧的,但万一有人遇到类似的问题,这就是我如何解决它 - 也可能是一个不同的原因,但我最近从Hive 2.1升级到Hive 2.3。最重要的是,问题是由正在使用的版本的无效Metastore架构引起的,并且必须升级架构以匹配Hive版本。

查看目录$HIVE_HOME/scripts/metastore/upgrade/,找到与您为Metastore使用的数据库匹配的目录。提供升级脚本:

  1. 德比
  2. MSSQL
  3. MySQL的
  4. 预言
  5. postgre
  6. 每个目录中都有一个README文件,它解释了如何升级您的Metastore架构。在我的例子中,我使用mysql数据库为我的Metastore,并从Hive 2.1转到Hive 2.3,这意味着我需要运行:1)upgrade-2.1.0-to-2.2.0.mysql.sql和2)upgrade-2.2.0-to-2.3.0.mysql.sql按顺序。

    回到Hive,运行select语句,它对我有用。 希望这会有所帮助。

答案 3 :(得分:0)

您可以先使用数据库。然后执行查询。例如:

使用数据库名称; SELECT * FROM table_name LIMIT 10;

这将解决 Hive 中的“找不到表”问题。