【问题标题】:Loading Data into an empty Impala Table with account data partitioned by area code将数据加载到一个空的 Impala 表中,其中帐户数据按区号分区
【发布时间】:2020-07-13 07:54:36
【问题描述】:

我正在尝试将名为 accounts 的表中的数据复制到名为 accounts_by_area_code 的空表中。我在 accounts_by_area_code 中有以下字段:acct_num INT、first_name STRING、last_name STRING、phone_number STRING。该表按区号(phone_number 的前 3 位)进行分区。

我需要使用 SELECT 语句将区号提取到 INSERT INTO TABLE 命令中,以将指定的列复制到新表中,并按区号动态分区。

这是我最后一次尝试:

impala-shell -q "INSERT INTO TABLE accounts_by_areacode (acct_num, first_name, last_name, phone_number, areacode) PARTITION (areacode) SELECT STRLEFT (phone_number,3) AS areacode FROM accounts;"

这会生成错误:AnalysisException:列排列和 PARTITION 子句提到的列 (5) 多于 SELECT / VALUES 子句和 PARTITION 子句返回 (1)。我不相信我的基本语法是正确的,所以任何帮助都会很棒,因为我是 Impala 的新手。

【问题讨论】:

    标签: syntax partitioning impala


    【解决方案1】:

    Impala 根据数据动态创建分区。所以不知道为什么要创建一个带分区的空表,因为它将在插入新数据时自动创建。
    不过,我认为您可以使用这样的分区创建空表-
    impala-shell -q "INSERT INTO TABLE accounts_by_areacode (acct_num) PARTITION (areacode) SELECT CAST(NULL as STRING), STRLEFT (phone_number,3) AS areacode FROM accounts;"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-07
      • 2023-03-16
      • 2014-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多