hive解析json嵌套數(shù)組 如何在Hive中使用Json格式數(shù)據(jù)?
如何在Hive中使用Json格式數(shù)據(jù)?方法: 1、將json以字符串的方式整個(gè)入Hive表,然后使用LATERAL VIEW json_tuple的方法,獲取所需要的列名。 2、將json拆成各個(gè)字段
如何在Hive中使用Json格式數(shù)據(jù)?
方法: 1、將json以字符串的方式整個(gè)入Hive表,然后使用LATERAL VIEW json_tuple的方法,獲取所需要的列名。 2、將json拆成各個(gè)字段,入Hive表。這將需要使用第三方的SerDe,例如:
https://code.google.com/p/hive-json-serde/
本文將主要使用第二種方法。wgethttps://hive-json-serde.googlecode.com/files/hive-json-serde-0.2.jar
# 添加jar包hive> add jar /home/heyuan.lhy/develop/wanke_http_test/hive-json-serde-0.2.jarhive> # 創(chuàng)建hive表CREATE TABLE test_json( id BIGINT, text STRING,)ROW FORMAT SERDE "org.apache.hadoop.hive.contrib.serde2.JsonSerde"STORED AS TEXTFILELOAD DATA LOCAL INPATH "test.json" OVERWRITE INTO TABLE test_json之后,就可以使用 SELECT等語句進(jìn)行操作了。 備注:這個(gè)SerDe雖然比較老,但經(jīng)過測試,支持到0.12的版本無壓力。如何優(yōu)化很長的JSON數(shù)據(jù)?
現(xiàn)在主流的網(wǎng)絡(luò)請(qǐng)求中都采用JSON作為其數(shù)據(jù)交互格式,這主要是因?yàn)镴SON有以下優(yōu)勢:
數(shù)據(jù)格式簡單,易于讀寫,格式都是壓縮的,占用帶寬?。?br/>
易于解析,客戶端JS很容易JSON數(shù)據(jù)進(jìn)行解析和編輯;
支持大多數(shù)后端語言,大大簡化了服務(wù)端和前端交互時(shí)的代碼開發(fā)量,且易于維護(hù);
但如果在開發(fā)過程中,把很長很大的JSON數(shù)據(jù)在前后端傳輸,那就說明設(shè)計(jì)工作沒做好,應(yīng)該盡量避免這種數(shù)據(jù)傳輸,但也可以從下面幾個(gè)方面進(jìn)行下優(yōu)化:
優(yōu)化json數(shù)據(jù)的key-value的長度,盡量簡潔易懂即可;
異步分批加載,建設(shè)大數(shù)據(jù)量造成前端頁面卡死;
前端增加銷毀機(jī)制,可以一邊加載,一邊銷毀;
使用解析和壓縮性能高的JSON解析工具;
在 Skylake 處理器上,各種解析器解析同一個(gè)大數(shù)據(jù)量的JSON文件的速度(以 GB/s 為單位)如下所示: