在配置单元中加载数据时出现架构问题

2vuwiymt  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(422)

这是我的json文件 { "reviewerID": "A10000012B7CGYKOMPQ4L", "asin": "000100039X", "reviewerName": "Adam", "helpful": [0, 0], "reviewText": "Spiritually and mentally inspiring! A book that allows you to question your morals and will help you discover who you really are!", "overall": 5.0, "summary": "Wonderful!", "unixReviewTime": 1355616000, "reviewTime": "12 16, 2012" } 我用来创建表的代码
scala> hc.sql("create table books (reviewerID string, asin string ,reviewerName string , helpful array, reviewText string, overall int, summary string,unixReviewTime string,reviewTime string)row format delimited fields terminated by ','") hc.sql("select * from books").show() 选择输出*
在这里,“helping”列下的数据在“reviewtext”中移动,同时干扰了其他列,因此对于这样的json文件,什么是正确的模式?为什么在指定的列中只显示[reviewerid:“a1000012b7cgykompq4l]而不是[a1000012b7cgykompq4l]

kx5bkwkv

kx5bkwkv1#

分隔的子句行格式的含义是-加载文件中的每个字段由分隔符分隔,并且-加载文件中以“,”结尾的字段的含义是-分隔符是“,”。
因此,您创建的表按以下方式解释文件中的字段-行首直到遇到“,”作为第一个字段,从第一个字段的结尾直到遇到另一个“,”作为第二个字段,依此类推。
第1个字段-->{“reviewerid”:“a10000012b7cgykompq4l”
第二个字段-->“asin”:“000100039x”
第四个字段-->“帮助”:[0
第五字段-->0]
第六栏-->“复习课文”:“精神上和精神上鼓舞人心!这本书可以让你质疑自己的道德,帮助你发现自己的真实面目!”
如果要创建一个解释json输入的配置单元表,就必须使用json-serde。
如:

create table <table_name>(col1 data_type1, col2 data_type2, ....)
ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe' 
STORED AS TEXTFILE

您可以通过下面的链接查看详细的示例。
在配置单元表中加载json文件

相关问题