如何在Impala中插入Array <struct>值?

时间:2016-07-12 17:00:03

标签: cloudera-cdh impala complextype

我正在尝试填充复杂的数据结构 - 在Impala表中的数组数据类型,目前我正在使用CDH 5.5,真的不确定如何用一些数据填充列。例如:

create table arrstructex(
  name string,
  array< 
    struct<
      id:string,
      passcode:string,
      isprevileged:boolean
    >
  >
)

2 个答案:

答案 0 :(得分:1)

我将你的问题格式化了一点,以便我可以阅读它。我认为存在语法错误:数组需要有一个名称。 SQL解析器也可能在字符之前需要一个空格。

我建议您养成使用大写SQL关键字和缩进的习惯。所以遵循example here

CREATE TABLE array_struct_example
(
  name STRING
  , credentials ARRAY < STRUCT <
      id: STRING
    , passcode: STRING
    , is_privileged: BOOLEAN
  >>
)

我添加了名称credentials并更正了拼写错误。

答案 1 :(得分:0)

INSERT语句当前不支持写入包含复杂类型(ARRAY,STRUCT和MAP)的数据文件。要为此类表准备Parquet数据,请在Impala外部生成数据文件,然后使用LOAD DATA或CREATE EXTERNAL TABLE将这些数据文件与表关联。当前,此类表必须使用Parquet文件格式。

请参阅文档以了解插入语句:cloudera_5.15_insert