【问题标题】:Sqoop Import as-parquetfile based on column valueSqoop 根据列值导入 as-parquetfile
【发布时间】:2019-02-12 01:19:02
【问题描述】:

所以我正在尝试运行一个 sqoop 导入作业,在其中我根据我的 partition_key 保存镶木地板文件。最终,我希望我的文件夹 /TABLE_DIR/ 有 5 个 parquet 文件,每个唯一分区键 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】:

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

    1. 您可以在此数据上公开一个配置单元表(注意元数据文件!)。
    2. 将此数据插入另一个配置单元表(这也是镶木地板),并在插入时对任何列进行排序(这样做是为了将插入选择(这将再次成为仅映射作业)转换为映射减少job) 并将 mapreduce.job.reduces 设置为 5 或任何所需的值。

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

    【讨论】:

      猜你喜欢
      • 2019-02-03
      • 2015-09-12
      • 2016-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-01
      • 2016-08-07
      • 2017-02-03
      相关资源
      最近更新 更多