如何在hive中加载json snappy压缩

afdcj2ne  于 2021-05-22  发布在  Spark
关注(0)|答案(2)|浏览(758)

我在hdfs中有一堆json snappy压缩文件。它们是hadoop snappy压缩的(不是python,cf其他so问题),并且具有嵌套结构。
找不到将它们加载到配置单元的方法(使用json\u元组)?
我能得到一些关于如何加载它们的资源/提示吗
以前的参考资料(没有有效答案)
pyspark如何加载压缩snappy文件
配置单元:解析json

8qgya5xd

8qgya5xd1#

如果数据已分区(例如按日期)

在配置单元中创建表

CREATE EXTERNAL TABLE IF NOT EXISTS database.table (
  filename STRING,
  cnt BIGINT,
  size DOUBLE
) PARTITIONED BY (   \`date\` STRING ) 
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' 
STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'  
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION 'folder/path/in/hdfs'

恢复分区(在恢复之前,表似乎是空的) MSCK REPAIR TABLE database.table

esyap4oy

esyap4oy2#

将所有文件放在hdfs文件夹中,并在其上创建外部表。如果文件具有.snappy这样的名称,hive将自动识别它们,不过您可以指定 TBLPROPERTIES ("orc.compress"="SNAPPY") ```
CREATE EXTERNAL TABLE mydirectory_tbl(
id string,
name string
)
ROW FORMAT SERDE
'org.openx.data.jsonserde.JsonSerDe'
LOCATION '/mydir' --this is HDFS/S3 location
TBLPROPERTIES ("orc.compress"="SNAPPY")
;

jsonserde可以解析所有复杂的结构,这比使用json\u元组容易得多。json中的简单属性被Map到列,就像方括号中的一样[]是数组<>,{}是结构<>或Map<>,复杂类型可以嵌套。仔细阅读自述:https://github.com/rcongiu/hive-json-serde. 这里有一节介绍嵌套结构和许多createtable示例。
如果您仍然想使用json\u tuple,那么就创建一个字符串列的表,然后使用json\u tuple进行解析。但这要困难得多。
所有json记录都应该是单行的(json对象中没有换行符,以及\r)。这里也提到了这一点https://github.com/rcongiu/hive-json-serde

相关问题