我试图通过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;
这是做这件事的最佳方法,还是有一个更简单的方法来解决这个问题?请帮帮我!
1条答案
按热度按时间sf6xfgos1#
由于gzip textfile文件是不可拆分的,因此只会启动一个Map程序,或者如果要使用多个Map程序,则必须选择其他数据格式。
如果有大量的json文件,并且您想在hdfs上保存存储,请使用bzip2压缩来压缩hdfs上的json文件。您可以从配置单元中查询.bzip2 json文件,而无需修改任何内容。