Sqoop 根据列值导入as-parquetfile
Sqoop Import as-parquetfile based on column value
所以我正在尝试 运行 一个 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/
由于 sqoop 导入是一个仅映射的作业,您无法控制输出文件的数量。它将由 hadoop 拆分机制处理(您可以在 mapreduce 或 pig 中控制它,但 hive 脚本不确定 sqoop。"fetch_size" 参数可以查看)。但是,如果您真的想执行以下
- 您可以在此数据上公开一个配置单元 table(小心元数据文件!)。
- 将此数据插入另一个配置单元 table(这也是镶木地板)并在插入时对任何列进行排序(这样做是为了转换插入-select,这将是一个map only job 再次映射到 map-reduce 作业)并将 mapreduce.job.reduces 设置为 5 或任何所需的值。
属性 将强制 5 个减速器提供 5 个输出文件。
所以我正在尝试 运行 一个 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/
由于 sqoop 导入是一个仅映射的作业,您无法控制输出文件的数量。它将由 hadoop 拆分机制处理(您可以在 mapreduce 或 pig 中控制它,但 hive 脚本不确定 sqoop。"fetch_size" 参数可以查看)。但是,如果您真的想执行以下
- 您可以在此数据上公开一个配置单元 table(小心元数据文件!)。
- 将此数据插入另一个配置单元 table(这也是镶木地板)并在插入时对任何列进行排序(这样做是为了转换插入-select,这将是一个map only job 再次映射到 map-reduce 作业)并将 mapreduce.job.reduces 设置为 5 或任何所需的值。
属性 将强制 5 个减速器提供 5 个输出文件。