Sqoop是关系型数据库(MySQL/Postgresql)和HDFS(Hive/HDFS文件)进行交互的一个工具.
Sqoop import 就是从关系型数据库导入到基于HDFS的数据库.
Sqoop export 就是从基于HDFS的数据库导出到关系型数据库.
Note: Sqoop export 是直接把导出HDFS文件. 如果创建分区表, 那么每个分区表都有对应的HDFS文件, 每个文件都要导出一次.
举一个从Postgresql导入Hive的Demo:
sqoop import \
"-Dorg.apache.sqoop.splitter.allow_text_splitter=true" \
--connect jdbc:postgresql://192.168.0.222:5432/ocm?currentSchema=sftm_km \
--username postgres \
--password password \
--table dmsdatasearch_v1_getdmssalesorderinfos_head \
--hive-database ods_sftm \
--hive-table ods_orders_dt_head \
--hive-import \
--fields-terminated-by '\001' \
--hive-drop-import-delims \
--lines-terminated-by '\n' \
--delete-target-dir \
-- -Dorg.apache.sqoop.splitter.allow_text_splitter=true \
--split-by split_id \
-m 5
举一个从Postgresql导入Hive的Demo:
sqoop export \
--connect jdbc:postgresql://192.168.0.222:5432/ocm?currentSchema=sftm_km \
--username postgres \
--password password \
--table order_dt_head \
--export-dir "hdfs://namenode.gaialab.ai:8020/warehouse/tablespace/managed/hive/ods_sftm.db/ods_orders_dt_head_tmp/*" \
--input-fields-terminated-by '\001' \
--lines-terminated-by '\n' \
--input-null-string '\\N' \
--input-null-non-string '\\N' \
-m 5
sqoop常用命令:
命令 | 描述 |
---|---|
--connect <jdbc-uri> | 连接字符串 |
--help | show各个命令的含义 |
--password <password> | 数据库密码 |
--username <username> | 数据库账号 |
--delete-target-dir | 导入数据前删除目标路径 |
-e,--query <statement> | 可以用sql语句指定需要导入的数据 |
-m,--num-mappers <n> | 并行多少个任务执行导入 |
--split-by <column-name> | 如果-m > 1, 则需要指定该列用于导入 |
--table <table-name> | 需要导入的表 |
--target-dir <dir> | 目标路径 |
--check-column <column> | Source column to check for incremental change(增量导入相关) |
--incremental <import-type> | Define an incremental import of type 'append' or 'lastmodified'(增量导入相关) |
--last-value <value> | Last imported value in the incremental check column(增量导入相关) |
--create-hive-table | 创建hive表, 结构和导入表一样, 但是类型都是string.如果创建的表存在, 就会报错. |
--external-table-dir <hdfs path> | hive外部表HDFS路径 |
--hive-database <database-name> | Hive数据库 |
--hive-import | 数据导入hive中而不是hdfs(其实导入hive本质也是hdfs) |
--hive-overwrite | 覆写hive表 |
--hive-table <table-name> | hive 表名称 |
篇幅所限, 不能列出所有的命令行.
大家可以通过sqoop help查看.
也可以通过sqoop官网查看.
sqoop命令行整理:https://github.com/MichaelZys/hello-word/blob/master/sqoop.xlsx