我知道,伙计们,
我正在尝试使用sqoop只提取带有过滤器的数据。为此,我使用了一个绑定查询。我只想过滤3到6之间的部门id。我有以下命令:
[cloudera@quickstart ~]$ sqoop import --connect jdbc:mysql://localhost:3306/retail_db --username retail_dba --password cloudera --table departments --target-dir=wareouse/departments_v1 --boundary-query "SELECT department_id, department_name FROM departments WHERE department_id BETWEEN 3 AND 6"
但我得到以下错误:
18/12/05 12:48:27 ERROR tool.ImportTool: Import failed: java.io.IOException: java.sql.SQLException: Invalid value for getLong() - 'Fitness'
你知道我在命令上犯了什么错吗?
源数据如下:
department_id | department_name |
+---------------+-----------------+
| 2 | Fitness |
| 3 | Footwear |
| 4 | Apparel |
| 5 | Golf |
| 6 | Outdoors |
| 7 | Fan Shop |
+---------------+-----------
谢谢!
1条答案
按热度按时间v1uwarro1#
边界查询需要稍加修改。默认情况下,
Sqoop
将使用以下查询查找用于创建拆分的边界:SELECT MIN(department_id), MAX(department_id) FROM departments
要导入数据的子集,可以使用此边界查询提供下限和上限:SELECT 3,6 FROM departments
下图提供了更多详细信息:1) 创建表并填充数据
2) 检查数据
3) 运行sqoop作业
4) 检查结果