Hive:FAILED: SemanticException [Error 10001]: Line 1:14 Table not found 'Field'

Posted

技术标签:

【中文标题】Hive:FAILED: SemanticException [Error 10001]: Line 1:14 Table not found \'Field\'【英文标题】:Hive:FAILED: SemanticException [Error 10001]: Line 1:14 Table not found 'Field'Hive:FAILED: SemanticException [Error 10001]: Line 1:14 Table not found 'Field' 【发布时间】:2015-11-01 07:28:40 【问题描述】:

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

    > 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 [Error 10001]: Line 1:14 Table not found 'Field' org.apache.hadoop.hive.ql.parse.SemanticException: Line 1:14 Table not found 'Field' 在 org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.getMetaData(SemanticAnalyzer.java:1868) 在 org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.getMetaData(SemanticAnalyzer.java:1545) 在 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) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 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: Line 1:14 Table not found 'Field' 在 org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.getMetaData(SemanticAnalyzer.java:1594) ... 24 更多

2015-08-09 14:43:23,697 信息 [主要]: log.PerfLogger (PerfLogger.java:PerfLogEnd(148)) - 2015-08-09 14:43:23,698 信息 [主要]: log.PerfLogger (PerfLogger.java:PerfLogBegin(121)) - 2015-08-09 14:43:23,698 信息 [主要]: log.PerfLogger (PerfLogger.java:PerfLogEnd(148)) - 2015-08-09 14:43:23,704 信息 [主要]: log.PerfLogger (PerfLogger.java:PerfLogBegin(121)) - 2015-08-09 14:43:23,704 信息 [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>

请帮帮我!谢谢!

【问题讨论】:

Hadoop 2.7.1+Hive1.2.1+MySQL5 【参考方案1】:

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

不同的执行,不同的会话,不记得以前的查询。

试试吧

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

或者

hive -e "select * from test.Field"

【讨论】:

花费时间:3.193 秒,获取:1000 行。非常感谢!【参考方案2】:

试试:

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

【讨论】:

你还有其他问题吗 虽然此代码可以回答问题,但提供有关 如何 和/或 为什么 解决问题的附加上下文将改善答案的长期价值。【参考方案3】:

我知道这已经过时了,但是如果有人遇到类似的问题,这就是我修复它的方法 - 也可能是不同的原因,但我最近从 Hive 2.1 升级到了 Hive 2.3。归根结底,该问题是由正在使用的版本的无效元存储架构引起的,并且必须升级架构以匹配 Hive 版本。

查看目录$HIVE_HOME/scripts/metastore/upgrade/ 并找到与您用于元存储的数据库匹配的目录。提供升级脚本:

    德比 mssql mysql 神谕 postgre

每个目录内都有一个 README 文件,说明如何升级 Metastore 架构。就我而言,我使用 mysql 数据库作为元存储,并从 Hive 2.1 升级到 Hive 2.3,这意味着我需要依次运行:1) upgrade-2.1.0-to-2.2.0.mysql.sql AND 2) upgrade-2.2.0-to-2.3.0.mysql.sql

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

【讨论】:

【参考方案4】:

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

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

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

【讨论】:

以上是关于Hive:FAILED: SemanticException [Error 10001]: Line 1:14 Table not found 'Field'的主要内容,如果未能解决你的问题,请参考以下文章

Hive failed error in semantic analysis invalid table alias or column reference

Hive_删除数据库