1
我正在使用sqoop使用自由格式查詢導入數據。我sqoop進口看起來象下面這樣:Sqoop中的Ambigious列名稱
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給了我不明確的列名錯誤在--split-by
指定的emp_no
列同時存在於表。
如果我將--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的一個已知限制嗎?