这是我的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<int>, reviewText string, overall int, summary string,unixReviewTime string,reviewTime string)row format delimited fields terminated by ','")
hc.sql("select * from books").show()
这里有&#34;有用的数据&#34;专栏正在进入&#34; reviewText&#34;干扰其他列也是如此,这样的json文件的正确模式也可以显示[reviewerID&#34;:&#34; A10000012B7CGYKOMPQ4L]代替指定列中的[A10000012B7CGYKOMPQ4L]
答案 0 :(得分:0)
子句 行格式分隔 的含义是 - 加载文件中的每个字段用分隔符分隔,其含义为 - 以',' 结尾的字段是 - 加载文件中的分隔符','。
因此,您创建的表以下列方式解释文件中的字段 - 从行的开头直到遇到','作为第一个字段并从第一个字段的结尾开始直到它遇到另一个','作为第二个字段等等。
第一场 - &gt; {“reviewerID”:“A10000012B7CGYKOMPQ4L”
第二场 - &gt; “asin”:“000100039X”
第4场 - &gt; “乐于助人”:[0
第五场 - &gt; 0]
第6场 - &gt; “reviewText”:“精神上和精神上鼓舞人心!一本书,让你质疑你的道德,并帮助你发现你的真实面目!”
如果你想创建一个解释json输入的hive表,你必须使用JSON serde。
例如:
create table <table_name>(col1 data_type1, col2 data_type2, ....)
ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
STORED AS TEXTFILE
您可以通过以下链接查看详细示例。