sqoop 导入镶木地板尺寸
sqoop import parquet size
我的问题是,我的 Oracle table 有 50 万行。我设置了 sqoop 以将其作为 parquet 文件导入到 HDFS。我将 --num-partition 参数设置为 32,我得到了 32 个 parquet 文件,但是,其中一个有 28 MB,其他的只有 2-3 KB。
这是我的 sqoop 命令:
bin/sqoop import --connect <JDBC> --username <USER> --password <PASSWD> --table <TABLE> --target-dir <TARGET_DIR> -m32 --as-parquetfile --delete-target-dir --outdir <DIR>
我的问题是,这个文件大小可能是什么原因造成的?
说明你的数据分布不均匀
我在命令中没有看到任何 --split-by
列。因此,假设拆分是在主键上完成的。拆分基本上是由 运行 范围查询同时完成的。范围查询之一是获取最大数据,因此大小为 28 MB。
我建议你根本不要拆分 sqoop 作业,只需给出“-m 1”即可。此外,500K 行对于镶木地板文件来说并不高; parquet 是一种可拆分的文件格式,因此大的 parquet 文件不会成为 mapreduce 的开销。
我的问题是,我的 Oracle table 有 50 万行。我设置了 sqoop 以将其作为 parquet 文件导入到 HDFS。我将 --num-partition 参数设置为 32,我得到了 32 个 parquet 文件,但是,其中一个有 28 MB,其他的只有 2-3 KB。
这是我的 sqoop 命令:
bin/sqoop import --connect <JDBC> --username <USER> --password <PASSWD> --table <TABLE> --target-dir <TARGET_DIR> -m32 --as-parquetfile --delete-target-dir --outdir <DIR>
我的问题是,这个文件大小可能是什么原因造成的?
说明你的数据分布不均匀
我在命令中没有看到任何 --split-by
列。因此,假设拆分是在主键上完成的。拆分基本上是由 运行 范围查询同时完成的。范围查询之一是获取最大数据,因此大小为 28 MB。
我建议你根本不要拆分 sqoop 作业,只需给出“-m 1”即可。此外,500K 行对于镶木地板文件来说并不高; parquet 是一种可拆分的文件格式,因此大的 parquet 文件不会成为 mapreduce 的开销。