hive解析多层嵌套json数据 1.创建源表 2.创建ods层表 3.插入多层数据嵌套的json数据 4.查询数据并格式化 5.分析解析方法第一层 1.双层数组嵌套,先解开第一层嵌套 2.split方法将【hero】json数组切分成hive数组 3.explode方法将上述hive数组炸裂成多行 4.注意:第二步切分时我们并没有找到合适的切分规则,这里 ...
-- 创建最终结果表CREATETABLEresult_table(result_data STRING)ROWFORMAT DELIMITEDFIELDSTERMINATEDBY'\t'STOREDASTEXTFILE;-- 炸裂 JSON 数组并插入到最终结果表INSERTINTOTABLEresult_tableSELECTexploded_dataFROMexploded_table LATERALVIEWexplode(split(exploded_data,','))explodedASexploded_data; 1. 2. 3. 4....
下面是一个使用Hive进行JSON数组炸裂的示例代码: -- 创建一个包含JSON数组的表CREATETABLEexample_table(idINT,dataSTRING)ROWFORMAT SERDE'org.apache.hive.hcatalog.data.JsonSerDe';-- 向表中插入数据INSERTINTOexample_tableVALUES(1,'["apple", "banana", "orange"]'),(2,'["dog", "cat", "bird"]...
然后就可以直接用处理json字符串的函数处理,因为结果是json数组,所以这里配合了 explode和split函数 selectjson_tuple(json,'shippingTime','isClick','isOptional','optionalCode','optionalType')as(shippingTime,isClick,isOptional,optionalCode,optionalType)from(selectexplode(split(replace(regexp_replace('"[\"...
⑦ split(string str,string par):返回值为array类型。select split('atguigu','g');["at","ui","u"]⑧concat_ws(string spl,string s1,string s2,...):返回值为string类型。select concat_ws('-','a','b','c');a-b-c ⑨ get_json_object(string json,string path):返回值为string类型。s...
第一步解析:json数组拆分成多行 sql语句: 复制 SELECTexplode(split(regexp_replace(regexp_replace('[{"user_id":"1","name":"小琳","age":16},{"user_id":"2","name":"小刘","age":18},{"user_id":"3","name":"小明","age":20}]','\\[|\\]',''),将json数组两边的中括号去掉...
这里两次调用了regexp_replace,第一次是为了去掉两边的中括号,第二次是为了将jons 里面的逗号和分割json 的逗号进行区分,因为我们按照数组内容之间的分隔符进行split ,所以这里可以看做是将数组字符串的分隔符由逗号换成了# 号,然后就按照# split了 json_tuple 函数 string json_tuple(string json,string key1...
Hive解析多重嵌套JSON数组 最近在工作中遇到一个很难解析的JSON,他是一个嵌套的JSON数组的JSON,要使用Hive来进行解析,用Presto写了一次,逻辑就很清晰,因为Presto自带了JSON数据类型,转换数组就很方便,而Hive解析完JSON数组后是一个字符串,只能使用split方法来对string类型的数据进行切分,所以如果遇到多层嵌套的数组,要...
select json_tuple(explode(split( regexp_replace(regexp_replace('[{"website":"baidu.com","name":"百度"},{"website":"google.com","name":"谷歌"}]', '\\[|\\]',''),'\\}\\,\\{','\\}\\;\\{'),'\\;')) ) ,'website','name') ; ...
json_splitconverts the string to the following array of structs, which are exploded into individual records: [ { row_id:1, json_string:'1' }, { row_id:2, json_string:'2' }, { row_id:3, json_string:'3' } ] You can access the JSON string for the element with thejson_string...