sqoop并行文档-矛盾?

gkn4icbw  于 2021-07-15  发布在  Hadoop
关注(0)|答案(0)|浏览(228)

我对sqoop关于性能的文档感到矛盾,这在我的大学引起了无休止的讨论。
给出下表:

+-------------------+--------------+------+-----+---------+----------------+
| Field             | Type         | Null | Key | Default | Extra          |
+-------------------+--------------+------+-----+---------+----------------+
| customer_id       | int(11)      | NO   | PRI | NULL    | auto_increment |
| customer_fname    | varchar(45)  | NO   |     | NULL    |                |
| customer_lname    | varchar(45)  | NO   |     | NULL    |                |
| customer_email    | varchar(45)  | NO   |     | NULL    |                |
| customer_password | varchar(45)  | NO   |     | NULL    |                |
| customer_street   | varchar(255) | NO   |     | NULL    |                |
| customer_city     | varchar(45)  | NO   |     | NULL    |                |
| customer_state    | varchar(45)  | NO   |     | NULL    |                |
| customer_zipcode  | varchar(45)  | NO   |     | NULL    |                |
+-------------------+--------------+------+-----+---------+----------------+

ps:主键是均匀分布的。
以及以下命令:
命令1:

sqoop import
--connectjdbc:mysql://quickstart:3306/retail_db
--table customers
--warehouse-dir /user/datalake/transient/retail
--username root
--password root

来自大学材料的结果:

我的结果:

21/02/10 04:49:39 INFO mapreduce.ImportJobBase: Transferred 931.1768 KB in 29.6699 seconds (31.3845 KB/sec)
21/02/10 04:49:39 INFO mapreduce.ImportJobBase: Retrieved 12435 records.

命令2:

sqoop import
--connect jdbc:mysql://quickstart:3306/retail_db
--table customers
--warehouse-dir /user/datalake/transient/retail
--split-by customer_id
--username root
--password root

来自大学材料的结果:

我的结果:

21/02/10 04:51:56 INFO mapreduce.ImportJobBase: Transferred 931.1768 KB in 27.1372 seconds (34.3137 KB/sec)
21/02/10 04:51:56 INFO mapreduce.ImportJobBase: Retrieved 12435 records.

sqoop版本:1.4.6-cdh5.13.0
教师:
使用命令2,指定--split by,应该可以获得性能提升。
事实上就是这样。然而,在实践中,两个命令是相同的,为什么会发生这种情况?
我读过的每一篇文献都证实了我的理论。
[…]默认情况下,sqoop将标识表中的主键列(如果存在),并将其用作拆分列。[…]如果主键的实际值在其范围内分布不均匀,则可能导致任务不平衡。您应该使用--split by参数显式选择不同的列。[…]请参阅原始引用
任何帮助都将不胜感激。谢谢。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题