Sqoop基于列值导入as-parquet文件

问题描述 投票:1回答:1

所以我试图运行一个sqoop导入作业,我根据我的partition_key保存镶木地板文件。最终我想为我的文件夹/TABLE_DIR/to有5个镶木地板文件,每个独特的分区键1。目前我只得到4.我无法设置num-mappers 5. 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/
hadoop sqoop parquet partition
1个回答
1
投票

由于sqoop导入是仅限地图的作业,因此无法控制输出文件的数量。它将由hadoop拆分机制处理(你可以在mapreduce或pig中控制它,hive脚本虽然不确定sqoop。但是fetch_size“参数可以查看)。但是,如果你真的想做下面的事情

  1. 您可以在此数据上公开一个配置单元表(小心元数据文件!)。
  2. 将此数据插入另一个配置单元表(这也是镶木地板),并在插入任何列时进行排序(这样做是为了将insert-select转换为map-reduce作业),将mapreduce.job.reduces设置为5或任何所需的值。

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

© www.soinside.com 2019 - 2024. All rights reserved.