Неоднозначное имя столбца в Sqoop

Я использую sqoop для импорта данных с помощью запроса в свободной форме. Мой импорт sqoop выглядит следующим образом:

sqoop 
--connect jdbc:mysql://mysql/employees
--username root
--password root
--target-dir "/user/Sqoop/employees/"
--delete-target-dir
--query "select e.* from employees e join dept_emp d on e.emp_no = d.emp_no and d.dept_no ='d001' where \$CONDITIONS limit 25"
--split-by emp_no

Sqoop дает мне неоднозначную ошибку имени столбца как emp_no столбец, указанный в --split-by присутствует в обеих таблицах.

Если я изменю --split-by столбец к e.emp_no, Запрос Sqoop найти граничные значения не удастся. Sql для поиска граничных значений:

 SELECT MIN(emp_no), MAX(emp_no) FROM (select e.* from employees e join dept_emp d on e.emp_no = d.emp_no and d.dept_no ='d001' where  (1 = 1)  limit 25) AS t1

Я применил обходной путь, глядя на этот SQL, и изменил свой импорт, как показано ниже:

sqoop 
--connect jdbc:mysql://mysql/employees
--username root
--password root
--target-dir "/user/Sqoop/employees/"
--delete-target-dir
--query "select t1.* from employees t1 join dept_emp d on t1.emp_no = d.emp_no and d.dept_no ='d001' where \$CONDITIONS limit 25"
--split-by t1.emp_no

Это работало нормально. Есть ли другой способ достичь этого ИЛИ это известное ограничение с Sqoop?

1 ответ

Решение

Нету. Префикс дублированного столбца - единственный способ сделать это.

Другие вопросы по тегам