色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

hive json處理

錢多多2年前7瀏覽0評論

Hadoop生態(tài)的數(shù)據(jù)處理引擎Hive,內(nèi)置支持處理結(jié)構(gòu)化的數(shù)據(jù)存儲格式,如CSV、TSV、AVRO、PARQUET等。但是對于非結(jié)構(gòu)化的JSON格式數(shù)據(jù)處理則較為棘手,需要自己實(shí)現(xiàn)UDF函數(shù)或使用其他外部庫。

--例子1:自定義UDF函數(shù)解析JSON數(shù)據(jù),查詢Hive中的JSON數(shù)據(jù)
CREATE TEMPORARY FUNCTION parse_json AS 'com.example.udf.ParseJsonUDF';
SELECT parse_json(json_field) FROM json_table;

自定義UDF函數(shù)需實(shí)現(xiàn)org.apache.hadoop.hive.ql.exec.UDF接口或其子類,并重寫evaluate()方法。代碼如下:

public class ParseJsonUDF extends UDF {
public String evaluate(String json) throws JSONException {
JSONObject jsonObject = new JSONObject(json);
return jsonObject.getString("field_name");
}
}

使用外部庫解析JSON格式數(shù)據(jù),常用的庫有JsonSerde和Hive-JSON-Serde。以JsonSerde為例:

--例子2:JsonSerde庫解析JSON數(shù)據(jù),查詢Hive中的JSON數(shù)據(jù)
ADD JAR /path/to/json-serde-1.3.9.jar; --添加JsonSerde庫
CREATE EXTERNAL TABLE json_table (json_field STRING)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
STORED AS TEXTFILE;
SELECT json_field->>'$.field_name' FROM json_table;

使用JsonSerde庫需先下載jar包,并使用ADD JAR命令添加到Hive中。創(chuàng)建表時需要指定JsonSerDe序列化器,再使用json_field->>'$.field_name'語法查詢JSON字段。