【发布时间】:2019-03-09 12:51:09
【问题描述】:
理想情况下,当我们在没有merge-key 的情况下运行增量时,它将使用附加的数据集创建新文件,但如果我们使用merge-key,那么它将创建新的整个数据集,包括仅在一个文件中的前一个数据集。但是当我在我的 sqoop 工作中使用incremental append 时,我没有得到一个部分文件。以下是我的步骤:
1) 初始数据:
mysql> select * from departments_per;
+---------------+-----------------+
| department_id | department_name |
+---------------+-----------------+
| 2 | Fitness |
| 3 | Footwear |
| 4 | Apparel |
| 5 | Golf |
| 6 | Outdoors |
| 7 | Fan Shop |
+---------------+-----------------+
2) sqoop 命令将数据初始导入hdfs:
sqoop import \
--connect jdbc:mysql://localhost/practice \
--username root \
--password cloudera \
--table departments_per \
--target-dir /departments \
-m 1
现在,当我看到 hdfs 下的目录部门时,我可以看到一个部分文件,这很好。
3) 现在我在 mysql 中更新我的初始数据:
mysql> select * from departments_demo;
+---------------+-----------------+
| department_id | department_name |
+---------------+-----------------+
| 2 | Fitness |
| 3 | Footwear |
| 4 | Apparel |
| 5 | Golf |
| 6 | Outdoors |
| 7 | Fan |
| 8 | Tushar MC |
+---------------+-----------------+
4) 现在我创建增量追加作业并执行它:
sqoop job --create appendJobs12 \
-- import \
--connect jdbc:mysql://localhost/practice \
--username root \
--password cloudera \
--table departments_demo \
-m 1 \
--target-dir /departments \
--incremental append \
--merge-key department_id \
--check-column department_id \
--last-value 0
sqoop job --exec appendJobs12
5) 即使我使用了merge-key 概念,我也可以在 hdfs 目录中看到两个部分文件。
[cloudera@quickstart ~]$ hadoop fs -ls /departments
Found 3 items
-rw-r--r-- 1 cloudera supergroup 0 2018-10-04 00:31 /departments/_SUCCESS
-rw-r--r-- 1 cloudera supergroup 60 2018-10-04 00:31 /departments/part-m-00000
-rw-r--r-- 1 cloudera cloudera 67 2018-10-04 00:37 /departments/part-m-00001
当我显示数据时,它如下所示:
[cloudera@quickstart ~]$ hadoop fs -cat /departments/part-m-00000
2,Fitness
3,Footwear
4,Apparel
5,Golf
6,Outdoors
7,Fan Shop
[cloudera@quickstart ~]$ hadoop fs -cat /departments/part-m-00001
2,Fitness
3,Footwear
4,Apparel
5,Golf
6,Outdoors
7,Fan
8, Tushar MC
其中一个部分文件保存初始数据,第二个保存更新数据。谁能告诉我我哪里出错了,因为我无法使用更新的数据集获取一个部分文件。在此先感谢
【问题讨论】:
-
我发现手册中对此的描述相当混乱。
-
好的。哪个部分令人困惑,所以我明天可以编辑它
-
之前相同的代码运行良好,但今天我再次测试时,它失败了。奇怪!
-
手册有点混乱。看看这里sqoop.apache.org/docs/1.4.2/…
-
是的,我已经读过了。他们在那里提到了用于合并新旧数据集的合并工具
标签: mysql hadoop bigdata sqoop