Hive:FAILED: SemanticException [错误 10001]: 未找到行 1:14 Table 'Field'

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

有! 我是樱桃!最近一个问题总是让我很困惑!

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

错误 [main]: ql.Driver (SessionState.java:printError(960)) - 失败: SemanticException [错误 10001]: 行 1:14 Table 未找到 'Field' org.apache.hadoop.hive.ql.parse.SemanticException: 行 1:14 Table 未找到 '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(基础SemanticAnalyzer.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.运行 内部(Driver.java:1170) 在 org.apache.hadoop.hive.ql.Driver.运行(Driver.java:1059) 在 org.apache.hadoop.hive.ql.Driver.运行(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(本机方法) 在 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:未找到第 1:14 Table 行 '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 信息 [主要]: log.PerfLogger (PerfLogger.java:PerfLogEnd(148)) -

我的蜂巢-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>

请帮帮我!谢谢!

尝试:

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

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

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

试试看

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

hive -e "select * from test.Field"

我知道这是旧的,但如果有人 运行 遇到类似的问题,这是我修复它的方法——也可能是不同的原因,但我最近从 Hive 2.1 升级到蜂巢 2.3。最重要的是,问题是由正在使用的版本的元存储模式无效引起的,必须升级该模式以匹配 Hive 版本。

在目录 $HIVE_HOME/scripts/metastore/upgrade/ 中查找并找到与您用于 Metastore 的数据库相匹配的目录。提供了升级脚本:

  1. 德比
  2. mssql
  3. mysql
  4. 甲骨文
  5. postgre

每个目录中都有一个 README 文件,说明如何升级 Metastore 架构。在我的例子中,我为我的 Metastore 使用 mysql 数据库,并从 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 语句,它对我有用。 希望这有帮助。

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

使用database_name; SELECT * 来自 table_name 限制 10;

这将解决 Hive 中的 'Table not found' 问题。