Sqoop 拉取数据流程

考虑离线数据定时从SQL Server 数据库,批量导入到hive数据表。具体执行流程如下:


Sqoop 拉取数据流程_第1张图片

根据以上执行流程分别创建全量sqoop job,增量sqoop job

具体语句如下:

全量job

sqoop job--createxxx_whole--import--connect"jdbc:sqlserver://192.168.167.196:21499;database=xxx;username=xxx;password=xxx"--tablexxx--hive-import--hive-overwrite--hive-databasexxx--create-hive-table--hive-tablexxxx--m3--as-parquetfile--delete-target-dir

增量job

sqoop job--createodds_overunder_log_his_add--import--connect"jdbc:sqlserver://192.168.167.196:21499;database=xxx;username=xxx;password=xxx"--tablexxx--hive-import--hive-databasexxx--hive-tablexxx--m1--as-parquetfile--check-columnxxx--incrementalappend--last-value0

参考sqoop 各个命令文档:https://segmentfault.com/a/1190000002532293

说明:

as-parquetfile:将文件保存为parquet格式,可以避免原始数据因存在各种特殊字符而出现换行的错误

m :1 调整m的值可以改善内存泄漏的问题,m越大,内存集中占用越小。同时m的值会影响生成文件的数量即m=生成文件的数量

增量导入时可以直接将文件导入到hive表所在的数据位置,这样可以避免sqoop接入hive引起的各种问题,但是要注意字段的类型。sqoop将数据导入到hive,与sqoop将数据导入到hdfs对应的字段类型可能不一致,这一点要特别注意

增量导入到hdfs语句

sqoop job--createxxx--import--connect"jdbc:sqlserver://192.168.167.196:21499;database=xxx;username=xxx;password=xxxx"--tablexxx--m1--as-parquetfile-target-dir/user/hive/warehouse/rds_s2odds.db/xxx--check-columnid--incrementalappend--last-value0

你可能感兴趣的:(Sqoop 拉取数据流程)