插入Select命令导致异常ParseException line 1:12缺少TABLE at&#39; table_name&#39;靠近&#39; <eof>&#39;

时间:2015-09-21 12:59:54

标签: mysql hadoop hive hdfs

我2天大的时候进入hadoop和蜂巢。所以,我的理解非常基础。我有一个可能很愚蠢的问题。问题:我有一个配置单元外部表ABC,并创建了一个类似于ABC_TEST表的示例测试表。我的目标是根据select子句将ABC的某些内容复制到ABC_TEST。所以我使用以下命令创建了ABC_TEST:

 CREATE TABLE ABC_TEST LIKE ABC;

问题是:

1)此ABC_TEST不是外部表格。

2)使用Desc命令,ABC_TEST的LOCATION内容类似于

hdfs://somepath/somdbname.db/ABC_TEST 
  

- &GT;在命令&#34; hadoop fs -ls hdfs://somepath/somdbname.db/ABC_TEST &#34;我找不到文件。

     

- &GT;然而,&#34; hadoop fs -ls hdfs://somepath/somdbname.db/ABC &#34;给我两个文件。

3)当尝试从ABC向ABC_TEST插入值时,我在标题中提到了上述异常。以下是我用于向ABC_TEST插入值的命令:

INSERT INTO ABC_TEST select * from ABC where column_name='a_valid_value' limit 5;

在Hive中使用insert into select选项是错误的吗?我错过了什么?请帮忙

2 个答案:

答案 0 :(得分:1)

正确的语法是“INSERT INTO TABLE [TABLE_NAME]”

INSERT INTO TABLE ABC_TEST select * from ABC where column_name='a_valid_value' limit 5;

答案 1 :(得分:0)

我遇到了完全相同的问题,原因是Hive版本。

在我们的一个集群中,我们使用的是hive 0.14,而在新设置中,我们使用的是hive-2.3.4。

在配置单元0.14中,必须在INSERT命令中使用“ TABLE”关键字。

但是在蜂巢2.3.4版本中,这不是强制性的。

因此,在蜂巢2.3.4中,您在问题中上面提到的查询将正常运行,但是在较旧的版本中,您将遇到异常“ FAILED:ParseException line 1:12 missing table <>”。

希望这会有所帮助。