需要一個小勺子餵食,如何將複雜的json導入配置單元。 Json文件格式爲:{"some-headers":"", "dump":[{"item-id":"item-1"},{"item-id":"item-2"},...]}
。 蜂巢有根據dump
給出的字段。與現在一樣,Json文件的大小不超過200MB,但是由於它的轉儲,它很快就會達到GB。任何其他可能的方法將不勝感激。將複雜的Json數據導入配置單元
回答
發佈最終的端到端解決方案。通過步驟的過程步驟來轉換JSON蜂巢表:
步驟1)如果不存在已經
>$ sudo apt-get install maven
步驟2安裝行家)如果不存在已經
>sudo git clone https://github.com/rcongiu/Hive-JSON-Serde.git
步驟3)進入$ HOME/HIVE-JSON_Serde文件夾
步驟4)構建serd È包
>sudo mvn -Pcdh5 clean package
步驟5)SERDE文件將是 $ HOME /蜂房JSON-SERDE/JSON-SERDE /目標/ JSON-SERDE-1.3.7-快照JAR-與-dependencies.jar
步驟6)添加作爲SERDE相關性JAR在蜂巢
hive> ADD JAR $HOME/Hive-JSON-Serde/json-serde/target/json-serde-1.3.7- SNAPSHOT-jar-with-dependencies.jar;
步驟7)創建於$ HOME /書籍JSON文件。在蜂房
hive>CREATE TABLE tmp1 (
value ARRAY<struct<id:string,bookname:string,properties:struct<subscription:string,unit:string>>>
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES (
'mapping.value' = 'value'
)
STORED AS TEXTFILE;
步驟9)JSON(實施例)
{"value": [{"id": "1","bookname": "A","properties": {"subscription": "1year","unit": "3"}},{"id": "2","bookname":"B","properties":{"subscription": "2years","unit": "5"}}]}
步驟8)創建TMP1表從JSON將數據加載到TMP1表
>LOAD DATA LOCAL INPATH '$HOME/books.json' INTO TABLE tmp1;
步驟10)創建TMP2表做tmp1的爆炸操作表單,這個中間步驟是將多級json結構分解成多行 注意:如果你的JSON結構簡單單層,則避免這一步
hive>create table tmp2 as
SELECT *
FROM tmp1
LATERAL VIEW explode(value) itemTable AS items;
步驟11)創建配置單元表和從TMP2表加載值
hive>create table books as
select value[0].id as id, value[0].bookname as name, value[0].properties.subscription as subscription, value[0].properties.unit as unit from tmp2;
步驟12)下降TMP表
hive>drop table tmp1;
hive>drop table tmp2;
步驟13)測試蜂房表
hive>select * from books;
輸出:
ID名稱訂閱單元
1乙1年3
2 B2年5
「步驟11」應該是: 創建表格書籍爲 選擇items.id作爲id,items.bookname作爲名稱,items.properties.subscription作爲訂閱,items.properties.unit作爲從tmp2作爲單元; – 2016-12-08 06:44:38
有沒有可能使用配置單元的UPDATE命令更新此類配置單元表中的任何記錄? – 2018-02-12 09:27:42
- 1. 將postgresql數組導入配置單元
- 2. 將數據插入配置單元表
- 3. 將s3中的壓縮(lzo)數據導入配置單元
- 4. 如何將數據從hbase表導入配置單元表?
- 5. 使用RJDBC將數據從配置單元導入到r
- 6. sqoop將數據導入配置單元拋出錯誤org.apache.sqoop.hive.HiveConfig?
- 7. 將Hbase導入配置單元
- 8. 導出配置單元數據增量
- 9. 將JSON數據導入表單域
- 10. 使用spark sql將json數據加載到配置單元中
- 11. 如何將MySql表導入配置單元中的目標數據庫?
- 12. 將json數據導入MySQL?
- 13. 將JSON數據導入Postgres
- 14. 將json數據導入li
- 15. 將JSON數據導入Rails
- 16. 通過NSXMLParser將複雜的XML導入到核心數據中?
- 17. 使用配置單元將數據導出到csv sql
- 18. 使用sqoop將配置單元數據導出到oracle
- 19. 將複雜數據輸入到Access中
- 20. R將JSON數據導入數據框
- 21. 將導入的json數據導入數據框
- 22. 如何將複雜的JSON數據轉換爲單個數據框?
- 23. 如何單元測試複雜TypeToken的正確配置?
- 24. 將JSON數據導入Google工作表中的單個單元格
- 25. 從json字符串傳遞複雜的javascript對象配置(數據和函數)
- 26. sparklyr將數據寫入hdfs或配置單元
- 27. 將流媒體數據插入配置單元
- 28. 將分區數據插入到分區配置單元表
- 29. 將數據從配置單元中取出並存入mysql @ AWS?
- 30. 如何將多行數據插入配置單元(0.13.1)表中?
嗨, 是否有使用配置單元的UPDATE命令在這樣的配置單元表更新任何記錄的任何可能性? – 2018-02-12 09:28:02