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'
- hive.log 在这里:
错误 [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 的数据库相匹配的目录。提供了升级脚本:
- 德比
- mssql
- mysql
- 甲骨文
- 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' 问题。
有! 我是樱桃!最近一个问题总是让我很困惑!
> 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 在这里:
错误 [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 的数据库相匹配的目录。提供了升级脚本:
- 德比
- mssql
- mysql
- 甲骨文
- 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' 问题。