Sqoop 根据列值导入拼花地板文件



所以我正在尝试运行一个sqoop导入作业,在那里我根据我的partition_key保存镶木地板文件。最终,我希望我的文件夹/TABLE_DIR/有 5 个镶木地板文件,每个唯一的分区键 1 个。目前我只得到4个。我无法设置映射器编号 5。表2 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. 您可以在此数据上公开一个 hive 表(小心元数据文件!
  2. 将此数据插入另一个 hive 表(这也是镶木地板(,并在插入时对任何列进行排序(这样做是为了将插入选择(这将再次成为仅映射作业(转换为 map-reduce 作业(并将 mapreduce.job.reduce 设置为 5 或任何所需的值。

该属性将强制 5 个化简器提供 5 个输出文件。

最新更新