Sqoop可以将模式从Mysql更改为HBase

时间:2013-08-05 07:51:47

标签: sqoop

假设我有一个名为“users”的mysql表,它有类似的列 user_name, user_id, user_address, user_level

我可以使用sqoop将数据导入HBase并重命名和删除一些列吗?例如当他们导入HBase时,我的列可能看起来像这样:

rowkey:user_id

列:u_name, user_address

1 个答案:

答案 0 :(得分:1)

简短的回答是肯定的。要更改列名,您可以使用免费查询并使用诸如“选择[插入列]”之类的语句。

声明如下:

sudo sqoop import --connect jdbc:mysql://[host ip]/databasename --username [your username] --password [your password] --hbase-table [your hbase table] --column-family cf --hbase-row-key user_id --query "SELECT user_id, user_name AS u_name, user_address AS u_address FROM users WHERE \$CONDITIONS -m 1"

注意:您的查询必须包含令牌$ CONDITIONS,每个Sqoop进程将使用唯一条件表达式替换它。您还必须使用--split-by选择拆分列或使用“-m 1”。

您可以忽略select语句中的其他列。但是请注意,除了id之外,您可能还需要在行键中添加更多内容,因为这是HBase在检索记录方面的强大功能,并考虑添加md5以避免区域热点。您可以使用MySQL的“md5”命令执行此操作,例如。 “md5(user_id)AS md5”并将其放在实际的行键之前,以便在区域服务器之间获得良好的密钥分发。