拉取数据开源框架目前挺多的,本文主要讲述如何使用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 \01
--fields-terminated-by '\001' \ #指定数据之间的分隔符
--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 '\001' \
--lines-terminated-by '\n' \
--target-dir xxsc_corp \
--delete-target-dir \
--optionally-enclosed-by '"'
以上就是sqoop导入数据命令,若想自动化,推荐sqoop + airflow的方式
版权声明:本文为a544258023原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。