Sqoop根据列值导入as-parquetfile

因此,我试图运行一个sqoop导入作业,在该作业中,我根据partition_key保存了镶木地板文件。最终,我希望我的文件夹/TABLE_DIR/有5个镶木文件,每个唯一的分区键1个。目前我只能得到4。我不能设置num-mappers5。Table2的partition_key可能会上升到8,为此我想得到8个实木复合地板文件,等等。

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/
神童

由于sqoop导入是仅地图作业,因此您无法控制输出文件的数量。可以通过hadoop拆分机制来解决(您可以在mapreduce或pig中控制它,尽管这些脚本不确定sqoop。但是可以查看“ fetch_size”参数)。但是,如果您确实想执行以下操作

  1. 您可以在此数据上显示一个配置单元表(注意元数据文件!)。
  2. 将此数据插入另一个配置单元表(也是如此),并在插入时对任何列进行排序(这样做是为了将insert-select(将再次成为仅地图的工作)转换为map-reduce的工作),将mapreduce.job.reduces设置为5或任何所需的值。

该属性将强制五个reducer提供5个输出文件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章