需要一个小勺子喂食,如何将复杂的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. 将s3中的压缩(lzo)数据导入配置单元
- 2. 使用RJDBC将数据从配置单元导入到r
- 3. 将Hbase导入配置单元
- 4. 使用spark sql将json数据加载到配置单元中
- 5. 如何将MySql表导入配置单元中的目标数据库?
- 6. 将json数据导入MySQL?
- 7. 将JSON数据导入Postgres
- 8. 通过NSXMLParser将复杂的XML导入到核心数据中?
- 9. 使用sqoop将配置单元数据导出到oracle
- 10. 将复杂数据输入到Access中
- 11. R将JSON数据导入数据框
- 12. 如何将复杂的JSON数据转换为单个数据框?
- 13. 如何单元测试复杂TypeToken的正确配置?
- 14. 将流媒体数据插入配置单元
- 15. 如何将多行数据插入配置单元(0.13.1)表中?
- 16. 将数据从配置单元中取出并存入mysql @ AWS?
- 17. 复杂的导入/导出数据访问/ Excel
- 18. 导入/导出数据库配置
- 19. XML vs json与复杂的数据
- 20. 管理复杂的配置
- 21. 将复杂模块导入到Processing.py
- 22. Tableau加载配置单元元数据
- 23. 引导复杂的数据集
- 24. 复杂和简单数据类型的JSON
- 25. Java与JSON玩复杂数据绑定
- 26. 更复杂的docpad元数据
- 27. 复杂MySql加入 - 导轨
- 28. 配置单元中的嵌套json
- 29. 复杂(?)Eclipse启动配置
- 30. 将JSON数据导入CSV格式
嗨, 是否有使用配置单元的UPDATE命令在这样的配置单元表更新任何记录的任何可能性? – 2018-02-12 09:28:02