Sqoop全量及增量的导入导出实现

您所在的位置:网站首页 sqoop支持的数据库 Sqoop全量及增量的导入导出实现

Sqoop全量及增量的导入导出实现

#Sqoop全量及增量的导入导出实现| 来源: 网络整理| 查看: 265

Sqoop全量及增量的导入导出实现 原创

wx62be9d88ce294 2023-04-08 09:16:52 ©著作权

文章标签 sqoop hadoop 大数据 数据 bc 文章分类 Html/CSS 前端开发

©著作权归作者所有:来自51CTO博客作者wx62be9d88ce294的原创作品,请联系作者获取转载授权,否则将追究法律责任

ETL的操作E:抽取1、抽取OLTP的数据 2、抽取日志数据 3、通过接口抽取第三方数据T:转换1、数据清洗 丢弃一些异常数据 处理一些脏数据 处理一些重复数据 2、数据的格式转换 日期: crate_time year month day 2022-12-23 --> 2022 12 23 2022-1-1 --> 2022-01-01 字符串转换: "path/list" --> path/list json数据 --> 解析L:加载1、全量加载 数据全部加载 2、增量加载 每次只加载新增或者修改数据ETL 采集工具Kettle特点: 1:图形化操作 2:底层是Java 3: 支持集群 4: 数据量大时,性能一般Nify特点: 1:图形化操作 2:采集数据时会造成大量的IO操作,性能一般Datax特点: 1:单进程,多线程 2:不能支撑海量数据的迁移操作Flume特点: 1:主要用于实时操作 2: 底层是MapReduceSqoop(项目使用)特点: 1:为Hadoop而生 2:底层是MapReduce 3:支撑大数据量的数据迁移工作Sqoop框架介绍1、Sqoop的导入导出 导入: RDBMS -----> Hadoop平台 导出: Hadoop平台 -----> RDBMS 2、Sqoop的重点是写导入导出的命令 3、Sqoop的底层是没有Reduce的MR Sqoop这是机械性将数据源的数据一条条进行搬移,不需要对数据做额外的聚合,所以不需要Reduce测试#测试你的sqoop是否能查看MySQL中所有的数据库 sqoop list-databases \ --connect jdbc:mysql://hadoop0 1:3306/ \ --username root \ --password 123456应用1-导入数据导入到HDFS-全量#split-by后边的字段是数字类型 sqoop import \ --connect jdbc:mysql://192.168.88.80:3306/userdb \ --table emp \ --username root \ --password 123456 \ --target-dir /sqoop/result3 \ --delete-target-dir \ --fields-terminated-by '\t' \ --split-by id \ --m 2 #如果你要指定多个maptask来完成数据的导入,也就是--m参数的值不是1,则必须添加一个参数--split-by #该参数用来指定你原表的数据如何分配给多个线程来实现导入 #--split-by id 内部原理是获取id的最小值和id的最大值,进行平均划分 SELECT MIN(`id`), MAX(`id`) FROM `emp` #如果split-by后边的字段是字符串类型,则需要添加以下内容 -Dorg.apache.sqoop.splitter.allow_text_splitter=true \数据导入到HDFS-增量sqoop import \ --connect jdbc:mysql://192.168.88.80:3306/userdb \ --username root \ --password 123456 \ --target-dir /sqoop/result5 \ --query 'select id,name,deg from emp WHERE id>1203 and $CONDITIONS' \ --delete-target-dir \ --fields-terminated-by '\t' \ --m 1(重点)数据导入-全量-到Hive-全量-- 手动在hive中建一张表 create table test.emp_hive ( id int, name string, deg string, salary int, dept string ) row format delimited fields terminated by '\t' stored as orc; -- 导入数据 sqoop import \ --connect jdbc:mysql://hadoop01:3306/userdb \ --table emp \ --username root \ --password 123456 \ --fields-terminated-by '\t' \ --hive-database test \ --hive-table emp_hive \ -m 1(重点)数据导入-全量-到Hive-增量#!/bin/bash yes_day=$(date -d "yesterday" +%Y-%m-%d) /usr/bin/hive -f a.sql wait /usr/bin/sqoop import \ --connect jdbc:mysql://192.168.88.80:3306/userdb \ --username root \ --password 123456 \ --query "select * from userdb.customertest where last_mod between '${yes_day} 00:00:00' and '${yes_day} 23:59:59' and \$CONDITION S" \ --fields-terminated-by '\t' \ --hcatalog-database test \ --hcatalog-table customertest \ -m 1应用2-导出数据从HDFS导出到MySQLsqoop export \ --connect jdbc:mysql://192.168.88.80:3306/userdb \ --table employee \ --username root \ --password 123456 \ --export-dir /sqoop/result1/(重点)数据从Hive导出到MySQLsqoop export \ --connect "jdbc:mysql://192.168.88.80:3306/userdb? useUnicode=true&characterEncoding=utf-8" \ --table employee \ --username root \ --password 123456 \ --hcatalog-database test \ --hcatalog-table emp_hive \ --input-fields-terminated-by '\t' \ -m 1OOzie1、Oozie的底层是MapReduce

Sqoop全量及增量的导入导出实现_hadoop

收藏 评论 分享 举报

上一篇:设计模式之行为型模式-状态模式



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3