使用spark上的hive将数据从gzip转换为sequencefile格式

lnvxswe2  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(457)

我试图通过spark运行时将一个大型gzip文件读入hive,以转换为sequencefile格式
而且,我想有效地做到这一点。
据我所知,spark只支持一个mapper gzip文件,就像它支持文本文件一样。
有没有办法更改正在读取的gzip文件的Map器数量?或者我应该选择另一种形式,比如Parquet地板?
我现在卡住了。问题是,我的日志文件是类似json的数据,保存为txt格式,然后是gzip-ed,所以在阅读时使用 org.apache.spark.sql.json .
我看到的示例显示将数据转换为sequencefile有一些简单的分隔符作为csv格式。
我曾经执行过这个查询:

create TABLE table_1
USING org.apache.spark.sql.json
OPTIONS (path 'dir_to/file_name.txt.gz');

但现在我必须重写成这样:

CREATE TABLE table_1(
ID BIGINT,
NAME STRING 
)
COMMENT 'This is table_1 stored as sequencefile'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS SEQUENCEFILE;

LOAD DATA INPATH 'dir_to/file_name.txt.gz' OVERWRITE INTO TABLE         table_1;

LOAD DATA INPATH 'dir_to/file_name.txt.gz' INTO TABLE table_1;

INSERT OVERWRITE TABLE table_1 SELECT id, name from table_1_text;

INSERT INTO TABLE table_1 SELECT id, name from table_1_text;

这是做这件事的最佳方法,还是有一个更简单的方法来解决这个问题?请帮帮我!

sf6xfgos

sf6xfgos1#

由于gzip textfile文件是不可拆分的,因此只会启动一个Map程序,或者如果要使用多个Map程序,则必须选择其他数据格式。
如果有大量的json文件,并且您想在hdfs上保存存储,请使用bzip2压缩来压缩hdfs上的json文件。您可以从配置单元中查询.bzip2 json文件,而无需修改任何内容。

相关问题