拉取数据开源框架目前挺多的,本文主要讲述如何使用sqoop来拉取数据。
sqoop当时是专门为了hadoop而来的,所以和hadoop结合比较好,sqoop常用是从mysql或者oracle数据库拉取数据到hadoop,接下来说明如何从这两者采集数据到hive中。
sqoop从mysql采集到hive
sqoop import --hive-import #指定导入到hive表 --connect jdbc:mysql://10.10.26.22:3306/xxsc #mysql连接 --username root #数据库用户名 --password 123456 #数据库密码 --verbose #打印命令运行时的详细信息 --table corp #数据库表名 --hive-database xxsc #Hive库名 --hive-table corp #Hive表名 --where " modify_time >= '2021-01-31 00:00:00' " #查询条件 --split-by id #数据以哪个字段分割 --compress #启用压缩 --compression-codec org.apache.hadoop.io.compress.SnappyCodec #指定压缩方式 --num-mappers 1 #指定导入并行度,大于1会根据条件进行count,一般1就是最优 --null-string '\N' #空字符串处理 --null-non-string '\N' #空对象处理 --hive-drop-import-delims #导入到hive时删除 n, r, and 1 --fields-terminated-by ' 01' #指定数据之间的分隔符 --lines-terminated-by 'n' #指定每行之间的分隔符 --target-dir xxsc_corp #指定导入数据存放在hdfs上的临时目录,假如库名相同表名不同会导入失败 --delete-target-dir #导入数据前先删除hdfs上的存在的临时目录 --optionally-enclosed-by '"' #给带有双引号或单引号的字段前后加上指定字符
sqoop从oracle采集到hive
sqoop import --hive-import
--connect jdbc:oracle:thin:@192.168.102.33:1521:orcl
--username root
--password 123456
--verbose
--table XXSC.CORP #数据库名和表名
--hive-database xxsc
--hive-table corp
--where " MODIFY_TIME >= TO_DATE('2021-01-31 00:00:00', 'yyyy-mm-dd hh24:mi:ss') "
--split-by ID
--compress
--compression-codec org.apache.hadoop.io.compress.SnappyCodec
--num-mappers 1
--null-string '\N'
--null-non-string '\N'
--hive-drop-import-delims
--fields-terminated-by ' 01'
--lines-terminated-by 'n'
--target-dir xxsc_corp
--delete-target-dir
--optionally-enclosed-by '"'
以上就是sqoop导入数据命令,若想自动化,推荐sqoop + airflow的方式
导入失败参考文档:解决sqoop导入hive表失败问题_厚积薄发-CSDN博客_sqoop导入数据失败



