【问题标题】:Insert into Select command causing exception ParseException line 1:12 missing TABLE at 'table_name' near '<EOF>'插入 Select 命令导致异常 ParseException 行 1:12 在 '<EOF>' 附近的 'table_name' 处缺少 TABLE
【发布时间】:2015-09-21 12:59:53
【问题描述】:

我已经 2 天大了 hadoop 和 hive。所以,我的理解是非常基础的。我有一个可能很愚蠢的问题。问题:我有一个配置单元外部表 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”给我返回了 2 个文件。

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 选项是否错误?我错过了什么?请帮忙

【问题讨论】:

    标签: mysql hadoop hive hdfs


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      在 hive 0.14 中,INSERT 命令中必须使用“TABLE”关键字。

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

      因此,在 hive 2.3.4 中,您在上面提到的问题中的查询可以正常工作,但在旧版本中,您将面临异常“FAILED: ParseException line 1:12 missing TABLE ”。

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-06-12
        • 2017-01-07
        • 2016-12-21
        • 2022-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多