我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
- >在命令" hadoop fs -ls hdfs://somepath/somdbname.db/ABC_TEST "我找不到文件。
- >然而," hadoop fs -ls hdfs://somepath/somdbname.db/ABC "给我两个文件。
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选项是错误的吗?我错过了什么?请帮忙
答案 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 <>”。>
希望这会有所帮助。