下面是我在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'
有人能帮忙吗?
1条答案
按热度按时间z9smfwbn1#
这是预期的行为。
首先,sqoop将根据您的查询从rdbms获取元数据(列细节)。
使用查询:
你看
$CONDITIINS
替换为1=0以获取元数据。现在您的查询将只返回1列
first_name
你要分道扬镳了acct_num
它不是从rdbms表中查询的。这就是为什么会出现未知列错误。所以确保在sql查询中也选择了splitbycolumn。