因此,我尝试运行一个sqoop导入作业,根据分区密钥保存Parquet文件。最终,我想为我的文件夹 /TABLE_DIR/
有5个Parquet文件,每个唯一的分区键1个。目前我只得到4分。我无法将num mappers设置为5。表2分区键可能会增加到8,为此我想得到8个Parquet文件等。
Table1:
primary_key:[1,2,3,4,5,6,7,8,9,10]
partition_key: [1,1,1,2,2,2,3,3,4,5]
value: [15,12,18,18,21,23,25,26,24,10]
Code:
sqoop import \
--query "select primary_key,partition_key,value from Table1" \
--compress --compression-codec snappy \
--split-by partition_key \
--target-dir /TABLE_DIR/
1条答案
按热度按时间rqdpfwrv1#
因为sqoop导入是一个只Map的作业,所以不能控制输出文件的数量。它将由hadoop分割机制来处理(您可以在mapreduce或pig中控制它,但是配置单元脚本不确定sqoop。“fetch\u size”参数可以查看)。但是,如果你真的想做下面的事情
您可以在此数据上公开配置单元表(小心元数据文件!)。
将此数据插入到另一个配置单元表(这也是Parquet地板)中,并在插入时对任何列执行排序(这样做的目的是将insert select(这将再次成为仅Map的作业)转换为map reduce作业),并将mapreduce.job.reduces设置为5或任何所需的值。
属性将强制5个reducer提供5个输出文件。