В идеале, когда мы запускаем инкрементное без merge-key
, это создаст новый файл с добавленным набором данных, но если мы используем merge-key
, то он создаст новый весь набор данных, включая предыдущий набор данных, только в одном файле.Но я не получаю один файл детали, когда использую incremental append
в моей работе sqoop.Ниже приведены мои шаги:
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 для первоначального импорта данных в hdf:
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) Iможно увидеть два файла детали в каталоге hdfs, хотя я использовал концепцию merge-key
.
[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
, где один файл детали содержит исходные данные, а второй - обновленные данные.Может кто-нибудь сказать мне, где я иду не так, из-за которого я не могу получить один файл детали с обновленным набором данных.Заранее спасибо