如果我有多个类似的表,例如:
表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中的所有记录?
答案 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。