Ten*_*sor 5 json hadoop hive snappy apache-spark
我在 HDFS 中有一堆 json snappy 压缩文件。它们是 HADOOP snappy 压缩的(不是 python,参见其他 SO 问题)并且具有嵌套结构。
找不到将它们加载到 HIVE 中的方法(使用 json_tuple)?
我可以获得有关如何加载它们的一些资源/提示吗
以前的参考文献(没有有效答案)
set hive.exec.compress.output=true;
set mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.SnappyCodec;
set mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.SnappyCodec;
set mapreduce.output.fileoutputformat.compress.type=BLOCK;
CREATE EXTERNAL TABLE mydirectory_tbl(
id string,
name string
)
ROW FORMAT SERDE
'org.openx.data.jsonserde.JsonSerDe'
LOCATION '/mydir' --this is HDFS/S3 location
;
Run Code Online (Sandbox Code Playgroud)
JSONSerDe可以解析所有复杂的结构,它比使用json_tuple容易得多。json中的简单属性按原样映射到列中方括号[]中都是数组<>,{}中是struct<>或map<>,复杂类型可以嵌套。仔细阅读自述文件: https: //github.com/rcongiu/Hive-JSON-Serde。有一节介绍嵌套结构和许多 CREATE TABLE 示例。
如果您仍然想使用 json_tuple,则创建具有单个 STRING 列的表,然后使用 json_tuple 进行解析。但这要困难得多。
所有 JSON 记录都应该在单行中(JSON 对象内没有换行符,以及 \r)。这里提到了同样的事情https://github.com/rcongiu/Hive-JSON-Serde