[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

可以看到,last-value的值为初始的'1900-01-01' 

3)首次执行作业

sqoop job -exec myjob_1

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

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

sqoop job --show myjob_1 | grep last.value

可以看到,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,结果如下所示

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

8)实际生产中在shell脚本里直接写sqoop执行语句就行

sqoop job --exec myjob_1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/18785.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于单片机的老人防摔倒的设计与实现

功能介绍 以51单片机作为主控系统&#xff1b;通过LCD1602液晶显示屏显示当前的经纬度及时间的信息&#xff1b;温度传感器采集当前体温&#xff1b;通过GPS接收模块获得当前位置的位置的经度、纬度、时间和高度等信息&#xff1b;通过ADXL345检测老人摔倒的一瞬间重力加速度通…

【opencv之cv::Mat数据深拷贝和浅拷贝探讨】

cv::Mat数据深拷贝和浅拷贝 cv::Mat 拷贝方法实验测试1.matA matSrc2.matB(matSrc)3.matC matSrc.clone()4.matSrc.copyTo(matD) 很多时候写程序除了一个强大的架构&#xff0c;细节也很重要&#xff0c;俗话说的话细节决定成败嘛&#xff0c;在使用cv::Mat做图片处理的时候发…

VSCODE 设置同步network Error 问题

前言 这个问题等解决方法如下&#xff1a; 获取到github以及vscode-auth.github.com的ip&#xff0c;添加到host&#xff0c;随后使用命令行刷新host&#xff0c;重新认证即可 第一步&#xff0c;查看log文件&#xff0c; 打开 vscode&#xff0c;使用快捷指令ctrl(command)…

虹科分享 | 如何基于IO-Link wireless方案实现工厂数据采集和状态监测

数据和数字化是工业4.0变革的关键驱动因素。从整个工厂的传感器获取数据&#xff0c;除了优化制造计划和流程外&#xff0c;还能实现强大的分析和决策。目前&#xff0c;基于数据的应用正在催生更多智能解决方案&#xff0c;以提高制造业的灵活性和敏捷性&#xff0c;进而提高效…

B端原型设计太复杂?看这一篇轻松入门

近年来&#xff0c;B端市场前景展现广阔&#xff0c;B端产品经理也成为了炙手可热的高薪岗位。作为负责管理和推动B端产品开发和生命周期的负责人&#xff0c;B端产品经理在企业市场中发挥着重要作用&#xff0c;因此他们往往也是具备全局能力框架的专业人员。 然而&#xff0…

服务端研发提测模板

test环境分支自测通过 提测邮件标注test环境分支 【xxxxxx需求】服务端研发提测了&#xff0c;快去测试吧!

Matplotlib---3D图

1. 3D图 # 3D引擎 from mpl_toolkits.mplot3d.axes3d import Axes3D fig plt.figure(figsize(8, 5)) x np.linspace(0, 100, 400) y np.sin(x) z np.cos(x)# 三维折线图 axes Axes3D(fig, auto_add_to_figureFalse) fig.add_axes(axes) axes.plot(x,y,z) plt.savefi…

在vite创建的vue3项目中使用Cesium加载czml路径信息和无人机模型

在vite创建的vue3项目中使用Cesium加载czml路径信息和无人机模型 用到的区域文件、地图标记文件、路径信息文件、模型文件 提取码&#xff1a;99jq 使用vite创建vue3项目 npm create vitelatestcd到创建的项目文件夹中 npm install安装Cesium npm i cesium vite-plugin-cesium…

AI智能语音机器人的功能和作用都有哪些?

智能语音机器人是一种能够使用自然语言处理技术和人工智能算法&#xff0c;通过声音与用户进行交互的机器人。它可以回答用户提出的问题、处理用户的投诉、提供产品或服务的相关信息等等。 实现一个智能语音机器人需要涉及多个技术领域&#xff0c;包括自然语言处理、语音识别…

CSS 沿着同一个方向旋转

主要解决旋转360后倒转的问题&#xff0c;沿着一个方向旋转&#xff0c;而不是倒回去重新开始。 效果 源码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>同方向旋转</title><script src"https://dp.rc1…

[QT编程系列-3]:C++图形用户界面编程,QT框架快速入门培训 - 2- QT程序的运行框架:HelloWorld、常见控件、对象树原理

目录 2. QT程序的运行框架 2.1 Hello World程序框架 2.2 QT Designer初识 2.3 用QT Designer设计用户登录界 2. QT程序的运行框架 2.1 Hello World程序框架 上述示例代码中&#xff0c;首先根据应用程序的需求使用 QCoreApplication 或 QApplication 定义 app 对象。如果你…

前端框架Layui的使用讲解(Layui搭建登录注册页面)

目录 一、前言 1.什么是Layui 2.Layui的背景 3.为什么要使用Layui 4.Layui的模块化 二、Layui使用讲解 1.初识Layui 2.搭建登录页面 静态效果图​ 封装引入文件页面&#xff08;公用页面&#xff09; jsp页面搭建 userDao编写 Servlet页面编写 xml文件配置 3.搭…