Sqoop - 我可以批量导入多个mysql表到一个HBase / Hive表

时间:2013-08-05 07:58:15

标签: sqoop

如果我有多个类似的表,例如:

表A:"users",列:user_name, user_id, user_address, etc etc

表B:"customers"列:customer_name, customer_id, customer_address, etc etc

表C:"employee"列:employee_name, employee_id, employe_address, etc etc

是否可以使用Sqoop将三个表导入一个HBase或Hive表?所以在导入之后,我有一个HBase表包含表A,B,C中的所有记录?

1 个答案:

答案 0 :(得分:7)

如果表格以某种方式相关,那肯定是可能的。可以在Sqoop中使用自由格式查询来完成该操作。在这种情况下,自由格式查询将是一个连接。例如,导入Hive时:

sqoop import --connect jdbc:mysql:///mydb --username hue --password hue --query "SELECT * FROM users JOIN customers ON users.id=customers.user_id JOIN employee ON users.id = employee.user_id WHERE \$CONDITIONS" --split-by oozie_job.id --target-dir "/tmp/hue" --hive-import --hive-table hive-table

同样,对于Hbase:

sqoop import --connect jdbc:mysql:///mydb --username hue --password hue --query "SELECT * FROM users JOIN customers ON users.id=customers.user_id JOIN employee ON users.id = employee.user_id WHERE \$CONDITIONS" --split-by oozie_job.id --hbase-table hue --column-family c1

所有这一切的关键因素是提供的SQL语句:

SELECT * FROM users JOIN customers ON users.id=customers.user_id JOIN employee ON users.id = employee.user_id WHERE \$CONDITIONS

有关自由格式查询的详细信息,请查看http://sqoop.apache.org/docs/1.4.4/SqoopUserGuide.html#_free_form_query_imports