Hadoop 基于列值将Sqoop导入为拼花文件

Hadoop 基于列值将Sqoop导入为拼花文件,hadoop,sqoop,parquet,partition,Hadoop,Sqoop,Parquet,Partition,因此,我尝试运行一个sqoop导入作业,根据分区键保存拼花地板文件。最后,我希望我的文件夹/TABLE_DIR/有5个拼花文件,每个唯一的分区键1个。目前我只有4分。我无法将num mappers设置为5。表2分区键可能会上升到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]

因此,我尝试运行一个sqoop导入作业,根据分区键保存拼花地板文件。最后,我希望我的文件夹
/TABLE_DIR/
有5个拼花文件,每个唯一的分区键1个。目前我只有4分。我无法将num mappers设置为5。表2分区键可能会上升到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”参数)。然而,如果你真的想做下面的事情

  • 您可以在此数据上公开配置单元表(小心元数据文件!)
  • 将此数据插入到另一个配置单元表(这也是拼花地板)中,并在插入时对任何列执行排序(这样做是为了将插入选择(这将再次是仅映射的作业)转换为映射缩减作业),并将mapreduce.job.reduces设置为5或任何所需值 该属性将强制五个减缩器提供5个输出文件