發佈端到端解決方案。通過步驟的過程步驟來轉換JSON蜂巢表:
步驟1)如果不存在已經
>$ sudo apt-get install maven
步驟2安裝行家)如果不存在已經
>sudo git clone https://github.com/rcongiu/Hive-JSON-Serde.git
安裝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名稱認購單位
1B中1年3
2 B2年5
什麼create table語句,你試過嗎? –
@MukeshS我用mongo hive轉換使用下面的鏈接 https://github.com/mongodb/mongo-hadoop/tree/master/hive 所以我在蜂巢中使用了我的mongo douments。 – Yogesh
嗯,我很抱歉,但我沒有在mongodb上工作,所以幫不了你。我以爲你只用Hive和Json。 –