Sqoop|Sqoop 拉取数据流程
考虑离线数据定时从SQL Server 数据库,批量导入到hive数据表。具体执行流程如下:
【Sqoop|Sqoop 拉取数据流程】
文章图片
根据以上执行流程分别创建全量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
推荐阅读
- Docker应用:容器间通信与Mariadb数据库主从复制
- 使用协程爬取网页,计算网页数据大小
- Java|Java基础——数组
- Python数据分析(一)(Matplotlib使用)
- Jsr303做前端数据校验
- Spark|Spark 数据倾斜及其解决方案
- 数据库设计与优化
- 爬虫数据处理HTML转义字符
- 数据库总结语句
- MySql数据库备份与恢复