如何使用hive / spark-sql生成大型数据集?

时间:2017-03-05 13:39:29

标签: hadoop apache-spark hive apache-spark-sql hiveql

E.g。生成1G记录,序号介于1和1G之间。

1 个答案:

答案 0 :(得分:2)

创建分区种子表<​​/ p>

create table seed (i int)
partitioned by (p int)

使用序号在0到999之间的 1K 记录填充种子表 每条记录都被插入到不同的分区中,因此位于不同的HDFS目录上,更重要的是 - 在不同的文件上。

P.S。

需要以下设置

set hive.exec.dynamic.partition.mode=nonstrict;
set hive.exec.max.dynamic.partitions.pernode=1000;
set hive.hadoop.supports.splittable.combineinputformat=false;
set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;
insert into table seed partition (p)
select  i,i 
from    (select 1) x lateral view posexplode (split (space (999),' ')) e as i,x

生成包含 1G 记录的表格 种子表中的每个 1K 记录都位于不同的文件中,并由另一个容器读取。
每个容器都会生成 1M 记录。

create table t1g
as
select  s.i*1000000 + e.i + 1  as n
from    seed s lateral view posexplode (split (space (1000000-1),' ')) e as i,x