有! 我是樱桃!最近一个问题总是困扰我很多时间!
> 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'
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>
请帮帮我!谢谢!
答案 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使用的数据库匹配的目录。提供升级脚本:
每个目录中都有一个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 中的“找不到表”问题。