您能否让我知道如何为以下dml创建数据。

create external table doc_sample(id int,topic array<struct<course:string,score:array<struct<sem:string,marks:int>>>>)
ROW FORMAT delimited
FIELDS TERMINATED BY '|'
COLLECTION ITEMS TERMINATED BY ','
map keys terminated by ':'
STORED AS TEXTFILE
location '/user/cloudera/data/isaac';

1|'english2':'sem1':80

hive>  select * from doc_sample;


1       [{"course":"'english2'","score":[{"sem":"'sem1'","marks":null}]}]

花费时间:0.095秒,获取:1行

最佳答案

抱歉,您的问题尚不清楚。
1.您是否需要知道发布的DDL输入文件的格式?
2.您是否需要知道如何创建表以实现SELECT查询中显示的输出?

我以下面的回应为#2。希望能帮助到你。
使用嵌套的复杂配置单元数据类型来编辑文件非常麻烦。请参阅“收集数据类型”上的配置单元指南部分,该部分说明了默认定界符^ A,^ B等,并进一步说明了如何将^ D行中的下一个^ D等用于嵌套数据类型。无论如何,很难用Ctrl字符手动编辑文件。
更好的方法是使用JSON格式的输入文件,并将jsonserde用于配置单元表。这是我创建示例的方式,
create table doc_sample_json (id int, topic array<struct<course:string,score:array<struct<sem:string,marks:bigint>>>> ) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'

hive> select * from doc_sample_json; OK1 [{"course":"english1","score":[{"sem":"sem1","marks":5}]},{"course":"english1","score":[{"sem":"sem1","marks":10},{"sem":"sem2","marks":15}]}]

关于hadoop - Hive数组与结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26643749/

10-12 23:44