sqoop自由形式查询不工作

gc0ot86w  于 2021-06-03  发布在  Sqoop
关注(0)|答案(1)|浏览(396)

下面是我在cloudera快速入门vm中尝试的查询
sqoop导入--用户名训练--密码训练--连接jdbc:mysql用法://localhost/loudacre--target dir/sample--split by accounts.acct\u num--query'选择accounts.first\u name from accounts join accountdevice on(accounts.acct\u num=accountdevice.account\u id),其中$conditions'kquote
下面是查询中使用的两个表的表结构

mysql> describe accounts;
+----------------+--------------+------+-----+---------+-------+
| Field          | Type         | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+-------+
| acct_num       | int(11)      | NO   | PRI | NULL    |       |
| acct_create_dt | datetime     | NO   |     | NULL    |       |
| acct_close_dt  | datetime     | YES  |     | NULL    |       |
| first_name     | varchar(255) | NO   |     | NULL    |       |
| last_name      | varchar(255) | NO   |     | NULL    |       |
| address        | varchar(255) | NO   |     | NULL    |       |
| city           | varchar(255) | NO   |     | NULL    |       |
| state          | varchar(255) | NO   |     | NULL    |       |
| zipcode        | varchar(255) | NO   |     | NULL    |       |
| phone_number   | varchar(255) | NO   |     | NULL    |       |
| created        | datetime     | NO   |     | NULL    |       |
| modified       | datetime     | NO   |     | NULL    |       |
+----------------+--------------+------+-----+---------+-------+
12 rows in set (0.00 sec)

 mysql> describe accountdevice;
+-------------------+--------------+------+-----+---------+----------------+
| Field             | Type         | Null | Key | Default | Extra          |
+-------------------+--------------+------+-----+---------+----------------+
| id                | int(11)      | NO   | PRI | NULL    | auto_increment |
| account_id        | int(11)      | NO   | MUL | NULL    |                |
| device_id         | int(11)      | NO   | MUL | NULL    |                |
| activation_date   | datetime     | NO   |     | NULL    |                |
| account_device_id | varchar(255) | NO   |     | NULL    |                |
+-------------------+--------------+------+-----+---------+----------------+

我得到以下例外

SQLSyntaxErrorException: Unknown column 't1.acct_num' in 'field list'
16/10/15 13:48:12 ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 't1.acct_num' in 'field list'

有人能帮忙吗?

z9smfwbn

z9smfwbn1#

这是预期的行为。
首先,sqoop将根据您的查询从rdbms获取元数据(列细节)。
使用查询:

select accounts.first_name FROM accounts JOIN accountdevice
 ON (accounts.acct_num = accountdevice.account_id) WHERE 1 = 0

你看 $CONDITIINS 替换为1=0以获取元数据。
现在您的查询将只返回1列 first_name 你要分道扬镳了 acct_num 它不是从rdbms表中查询的。这就是为什么会出现未知列错误。
所以确保在sql查询中也选择了splitbycolumn。

相关问题