[sqoop]导入数据

这篇具有很好参考价值的文章主要介绍了[sqoop]导入数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、覆盖导入

例如维度表,每次导入的数据需要覆盖上次导入的数据。

hive-overwrite参数:实现覆盖导入

hive-import参数:表示向hive表导入

hive-table参数:指定目标hive库表

sqoop import \
--connect jdbc:mysql://hadoop1:3306/source?useSSL=false \
--username root \
--password 123456 \
--table customer \
--hive-import \
--hive-table ods.customer \
--hive-overwrite

二、增量导入

sqoop提供增量导入模式,用于只导入比已经导入行新的数据行。

--check-column 在确定应该导入哪些行时,指定被检查的列。

--incremental 指定sqoop怎样确定哪些行是新行。有效值是append、lastmodified

--last-value 指定已经导入数据的被检查列的最大值(第一次需要指定,以后会自动生成)

sqoop支持两种类型的增量导入:append和lastmodified。可以使用--incremental参数指定增量导入的类型。

当被导入表的新行具有持续递增的行id值时,应该使用append模式。指定行id为--check-column的列。sqoop导入那些被检查列的值比--last-value给出的值大的数据行。

sqoop支持的另一个表修改策略叫做lastmodified模式。当源表的数据行可能被修改,并且每次修改都会更新一个last-modified列为当前时间戳时,应该使用lastmodified模式。那些被检查的时间戳比--last-value给出的时间戳新的数据行被导入。

增量导入命令执行后,在控制台输出的最后部分,会打印出后续导入需要使用的last-value,当周期性执行导入时,应该用这种方式指定--last-value参数的值,以确保只导入新的活修改过的数据。可以通过一个增量导入的保存作业自动执行这个过程,这是适合重复执行增量导入的方式。(这个值可以从日志看到)。

1)建立sqoop增量导入作业

sqoop job \
--create myjob_1 \
-- \
import \
--connect "jdbc:mysql://hadoop1:3306/source?useSSL=false&user=root&password=123456" \
--table sales_order \
--columns "order_number,customer_number,pruduct_code,order-date,entry_date,order_amount" \
--where "entry_date<current_date()" \ 
--hive-import \
--hive-table ods.sales_order \
--incremental append \
--check-columns entry_date \
--last-value '1900-01-01'

说明:
select current_date() 2023-07-12 
entry_date是个时间戳 年-月-日 时:分:秒.毫秒
上面的语句建立一个名为myjob_1的sqoop作业。使用--where参数是为了导入前一天的数据。例如,在2点执行此作业,则不会导入0到2点这个两个小时产生的销售订单数据。

2)查看此时作业中保存的last-value,结果如下显示

sqoop job --show myjob_1 | grep last.value

[sqoop]导入数据,sqoop,sqoop,hadoop,hive可以看到,last-value的值为初始的'1900-01-01' 

3)首次执行作业

sqoop job -exec myjob_1

因为last-value的值为'1900-01-01',所以这次会导入全部数据,查询ods.sals_order,最后结果如下所示

[sqoop]导入数据,sqoop,sqoop,hadoop,hive

4)查看此时作业中保存的last-value,结果显示如下

sqoop job --show myjob_1 | grep last.value

[sqoop]导入数据,sqoop,sqoop,hadoop,hive

可以看到,last-value的值为当前最大值'2016-06-30 05:20:47.0' 

5)在Mysql该表增加两条数据

一条7月3日,一条7月4日

6)再次执行sqoop作业,因为last-value的值为'2016-06-30 05:20:47'。所以这次只会导入entry_date比'2016-06-30 05:20:47'大的数据

sqoop job -exec myjob_1

7)查看此时作业中保存的last-value,结果如下所示

[sqoop]导入数据,sqoop,sqoop,hadoop,hive

因为当前为7月4号,所以只导入了7月3号的数据  

8)实际生产中在shell脚本里直接写sqoop执行语句就行文章来源地址https://www.toymoban.com/news/detail-556007.html

sqoop job --exec myjob_1

到了这里,关于[sqoop]导入数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Hadoop】通过Sqoop实现从MySQL导入数据到HDFS

    各位CSDN的朋友们大家好!这篇文章是在困扰了我三天(甚至更久),经过不断尝试与踩坑总结出来的通过 Sqoop 从Mysql数据库导入数据到 Hadoop hdfs 的详细笔记与感想,希望能帮助到大家!本篇文章收录于 初心 的 大数据 专栏。 🏠 个人主页:初心%个人主页 🧑 个人简介:大家

    2024年02月06日
    浏览(54)
  • MySQL中的业务数据该如何正确导入到Hive中 - Sqoop

    水善利万物而不争,处众人之所恶,故几于道💦   1. 使用Sqoop脚本将MySQL中的数据迁移到HDFS   2. 在Hive中建立与之对应的表   3. 将HDFS中的数据load到 Hive 数仓的ODS层的表中 1 . 使用Sqoop 将 MySQL中的数据导入到HDFS上 使用示例: mysql_to_hdfs.sh all 2021-02-01 导出的数据用lzo压缩,并

    2024年02月11日
    浏览(46)
  • 【Sqoop】MySQL表导入Hive

    用 Sqoop 将 MySQL 指定数据库指定的表导入Hive 的指定数据库

    2024年02月03日
    浏览(39)
  • 基于Hive的天气情况大数据分析系统(通过hive进行大数据分析将分析的数据通过sqoop导入到mysql,通过Django基于mysql的数据做可视化)

    Hive介绍: Hive是建立在Hadoop之上的数据仓库基础架构,它提供了类似于SQL的语言(HQL),可以对大规模数据集进行查询和分析。通过Hive,我们可以在分布式存储系统中进行复杂的数据处理和分析。 Sqoop简介: Sqoop是一个用于在Apache Hadoop和关系型数据库之间传输数据的工具。

    2024年04月13日
    浏览(41)
  • sqoop(DataX)-MySQL导入HIVE时间格问题

    用公司的大数据平台(DataX)导数,已经开发上线一个多月的一批报表,突然有同事说有个报表数据不准。出在时间字段上。 分析: 1、先看了原数据MySQL字段类型为datetime,目标字段为timestamp类型; 2、经发现所有时间的差距都是8小时,怀疑是因为时区转换的原因; 3、对比其他

    2024年02月02日
    浏览(47)
  • [sqoop]hive3.1.2 hadoop3.1.1安装sqoop1.4.7

    Hadoop3.2.4+Hive3.1.2+sqoop1.4.7安装部署_hadoop sqoop安装_alicely07的博客-CSDN博客 sqoop-env.sh 末尾添加 环境变量 先创建目录,解决警告:accumulo does not exist! (1)添加jdbc驱动包:将MySQL数据库的JDBC驱动包mysql-connector-java-5.1.37.jar添加到Sqoop安装目录的lib目录中。 (2)删除Sqoop安装目录的

    2024年02月07日
    浏览(59)
  • 基于Hadoop的MapReduce网站日志大数据分析(含预处理MapReduce程序、hdfs、flume、sqoop、hive、mysql、hbase组件、echarts)

    需要本项目的可以私信博主!!! 本项目包含:PPT,可视化代码,项目源码,配套Hadoop环境(解压可视化),shell脚本,MapReduce代码,文档以及相关说明教程,大数据集! 本文介绍了一种基于Hadoop的网站日志大数据分析方法。本项目首先将网站日志上传到HDFS分布式文件系统

    2024年02月16日
    浏览(61)
  • 教你使用Sqoop一次性将mysql中的十张表导入到hive中

    ​🏠​ 个人主页:csdn春和 ​🛰​ 推荐专栏:更多专栏尽在主页!  JavaWeb专栏(从入门到实战超详细!!!)  SSM专栏 (更新中) ​📖​ 本期文章:Sqoop一次性将mysql中的十张表同步到hive中 如果对您有帮助还请三连支持,定会一 一回访! 前言:这是一篇实验随记文章

    2023年04月15日
    浏览(53)
  • Sqoop【实践 01】Sqoop1最新版 MySQL与HDFS\Hive\HBase 核心导入导出案例分享+多个WRAN及Exception问题处理(一篇即可学会在日常工作中使用Sqoop)

    1️⃣ 查看所有命令【 sqoop help 】 2️⃣ 查看某条命令的具体使用方法【 sqoop help COMMAND 】 查询MySQL所有数据库,通常用于 Sqoop 与 MySQL 连通测试: 【具体参数可以使用 sqoop help list-databases 查看】实例: 结果: 【2个】WARN处理: 查询指定数据库中所有数据表,这里要注意一下

    2024年03月18日
    浏览(46)
  • [sqoop]导入数据

    例如维度表,每次导入的数据需要覆盖上次导入的数据。 hive-overwrite参数:实现覆盖导入 hive-import参数:表示向hive表导入 hive-table参数:指定目标hive库表 sqoop提供增量导入模式,用于只导入比已经导入行新的数据行。 --check-column 在确定应该导入哪些行时,指定被检查的列。

    2024年02月15日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包