如何在 Impala 中插入 Array<Struct> 值?
Posted
技术标签:
【中文标题】如何在 Impala 中插入 Array<Struct> 值?【英文标题】:How to insert Array<Struct> values in Impala? 【发布时间】:2016-07-12 17:00:03 【问题描述】:我正在尝试在 Impala 表中填充复杂数据结构 - 数组数据类型,目前我使用的是 CDH 5.5,真的不知道如何用一些数据填充列。例如:
create table arrstructex(
name string,
array<
struct<
id:string,
passcode:string,
isprevileged:boolean
>
>
)
【问题讨论】:
【参考方案1】:我稍微格式化了你的问题,以便我可以阅读它。我认为存在语法错误:数组需要有一个名称。 SQL 解析器也可能在字符前需要一个空格。
我建议您养成使用大写 SQL 关键字和缩进的习惯。所以关注example here
CREATE TABLE array_struct_example
(
name STRING
, credentials ARRAY < STRUCT <
id: STRING
, passcode: STRING
, is_privileged: BOOLEAN
>>
)
我添加了名称 credentials
并更正了拼写错误。
【讨论】:
【参考方案2】:INSERT 语句目前不支持写入包含复杂类型(ARRAY、STRUCT 和 MAP)的数据文件。要为此类表准备 Parquet 数据,您可以在 Impala 外部生成数据文件,然后使用 LOAD DATA 或 CREATE EXTERNAL TABLE 将这些数据文件与表相关联。目前,此类表必须使用 Parquet 文件格式。
插入语句见文档:cloudera_5.15_insert
【讨论】:
以上是关于如何在 Impala 中插入 Array<Struct> 值?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 impala 或 hive 上读取复杂类型数组<string>?
如何使用 Apache Impala 进行插入(如果不存在)?