我的问题是,我有一个500k行的Oracle表。我设置sqoop将其作为镶木地板文件导入HDFS。我将--num-partition参数设置为32,我获得了32个镶木地板文件,但其中一个是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>
我的问题是,这个文件大小的原因是什么?
答案 0 :(得分:0)
表示您的数据分布不均匀。
我在命令中没有看到任何--split-by
列。因此,假设在主键上完成拆分。拆分基本上是通过同时运行范围查询来完成的。其中一个范围查询是获取最大数据,因此大小为28 MB。
答案 1 :(得分:0)
我建议你根本不拆分sqoop作业,只给“-m 1”。此外,镶木地板文件的500K行不高;镶木地板是一种可拆分的文件格式,因此一个大的镶木地板文件不会成为mapreduce的开销。