分布式ETL工具Sqoop实践

2023-09-18 10:15:17

Mysql数据准备

1、在node02节点登录Mysql。

mysql -uroot -proot

2、新建数据库testdb。

create database testdb;

3、新建数据表ts。

use testdb;
create table ts(id int, name varchar(10), age int, sex char(1));

4、向表中插入数据。

insert into ts values(10001,'张三',18,'m');
insert into ts values(10002,'李四',20,'m');
insert into ts values(10003,'王小姐',18,'w');

Sqoop基本使用

1、查看MySQL中的所有数据库。

sqoop list-databases --connect jdbc:mysql://node02:3306/ --username root --password root

2、在/root目录下新建sqoop_file目录用于存放作业配置文件。

mkdir /root/sqoop

3、在/root/sqoop_file目录编写配置文件list_dbs.conf,减少重复参数配置。

vim list_dbs.conf
# 添加以下内容
list-databases
--connect
jdbc:mysql://node02:3306/
--username
root
--password
root

4、使用配置文件启动sqoop作业。

sqoop --options-file list_dbs.conf

5、查看testdb中所有表,使用非明文方式,手动输入密码。

sqoop list-tables \
   --connect jdbc:mysql://node02:3306/testdb \
   --username root \
   -P

6、在Mysql中执行SQL并将结果展示在控制台。

sqoop eval \
  --connect jdbc:mysql://node02:3306/testdb \
  --query "SELECT * FROM ts LIMIT 10" \
  --username root \
  -P

7、将testdb.ts表中所有数据全量导入到hdfs的/tmp/sqoop/testdb/ts目录中。

sqoop import \
   --connect jdbc:mysql://node02:3306/testdb \
   --username root \
   --query "select * from ts where \$CONDITIONS" \
   --target-dir /tmp/sqoop/testdb/ts \
   --fields-terminated-by "," \
   --hive-drop-import-delims \
   --split-by id \
   -m 1\
   -P

8、查看最终结果。

hadoop fs -ls /tmp/sqoop/testdb/ts
hadoop fs -cat /tmp/sqoop/testdb/ts/part-m-00000

9、在MySQL中新增一条数据。

insert into ts values(10004,'张飞',28,'m');

9、使用append增量方式将新增数据导入到/tmp/sqoop/testdb/ts/目录中。

sqoop import \
   --connect jdbc:mysql://node02:3306/testdb \
   --username root \
   --password root \
   --query "select * from ts where \$CONDITIONS" \
   --target-dir /tmp/sqoop/testdb/ts/ \
   --split-by id \
   -m 1  \
   --incremental append \
   --check-column id \
   --last-value 10003

11、查看导入结果。

hadoop fs -ls /tmp/sqoop/testdb/ts
hadoop fs -cat /tmp/sqoop/testdb/ts/part-m-00001

Sqoop Job操作

将sqoop任务编写为sqoop job,能够减少每次作业执行前,进行的参数配置工作。

  1. 将增量导入任务制作为sqoop job。
sqoop job --create im_ts \
   -- import \
   --connect jdbc:mysql://node02:3306/testdb \
   --username root \
   --password root \
   --query "select * from ts where \$CONDITIONS" \
   --target-dir /tmp/sqoop/testdb/ts/ \
   --split-by id \
   -m 1  \
   --incremental append \
   --check-column id \
   --last-value 10004
  1. 查看所有作业。
sqoop job --list
  1. 查看指定作业的详细信息。
sqoop job --show im_ts
  1. 在MySQL中新增数据。
insert into ts values(10005,'赵子龙',27,'m');
  1. 运行作业,增量导入数据,这里需要手动输入数据库密码,Sqoop job默认不保存。
sqoop job --exec im_ts
  1. 查看导入结果。
hadoop fs -cat /tmp/sqoop/testdb/ts/part-m-00002
  1. 再次在MySQL中新增数据。
insert into ts values(10006,'悟空',5000,'m');
  1. 运行作业,此时不需要手动修改--last-value,作业会自动根据上次的结果进行更新。
sqoop job --exec im_ts
  1. 修改$SQOOP_HOME/conf/sqoop-site.xml配置文件,可以使sqoop job自动保存密码。
  <property>
    <name>sqoop.metastore.client.record.password</name>
    <value>true</value>
    <description>If true, allow saved passwords in the metastore.
    </description>
  </property>
更多推荐

OpenCV自学笔记十七:傅里叶变换

1、Numpy实现傅里叶变换傅里叶变换(FourierTransform)是一种将信号从时域转换到频域的数学变换。它将一个连续或离散的时域信号分解为一组正弦和余弦函数的复合。在Python中,可以使用NumPy库来实现傅里叶变换。具体步骤如下:1.导入NumPy库:importnumpyasnp2.准备输入信号数据,可

9月21日,每日信息差

今天是2023年9月21日,以下是为您准备的14条信息差第一、谷歌高管已经广泛讨论了在2027年之前将博通作为人工智能芯片供应商的可能性第二、清华系团队宣布研发出千亿参数“制药版ChatGPT”,覆盖药物立项、临床前研究、临床试验的各阶段,作为制药专家的得力AI助手,提升药物研发效率。团队还发布了全球首个千亿参数多模态

手机快充协议

高通:QC2.0、QC3.0、QC3.5、QC4.0、QC5.0、FCP、SCP、AFC、SFCP、MTKPE1.1/PE2.0/PE3.0、TYPEC、PD2.0、PD3.0/3.1、VOOC支持PD3.0/PD2.0支持QC3.0/QC2.0支持AFC支持FCP支持PE2.0/PE1.1联发科的PE(PumpExp

单元测试(基于安卓项目)总结

前言:负责公司的单元测试体系的搭建,大约有一两个月的时间了,从最初的框架的调研,到中期全员的培训,以及后期对几十个项目单元测试的引入和推进,也算是对安卓的单元测试有了一些初步的收获以及一些新的认知,因此写下这篇文章来进行一个记录和总结。以下的所有内容纯属个人观点,欢迎讨论。一.单元测试标准1.测试维度单元测试有很多维度

第八篇-Tesla P40+ChatGLM2+LoRA

部署环境系统:CentOS-7CPU:14C28T显卡:TeslaP4024G驱动:515CUDA:11.7cuDNN:8.9.2.26目的验证P40部署可行性,只做验证学习lora方式微调创建环境condacreate--nameglm-tuningpython=3.10condaactivateglm-tuning

百分点科技跻身中国智慧应急人工智能解决方案市场前三

近日,全球领先的IT市场研究和咨询公司IDC发布了《中国智慧应急解决方案市场份额,2022》报告,数据显示,2022年中国智慧应急整体市场为104亿元人民币。其中,智慧应急人工智能解决方案子市场备受关注,百分点科技以10%的市场份额居该市场第三。报告指出,从数字技术应用上看,技术之间融合以及技术与场景的融合应用成为可见

Gradio-YOLOv5-YOLOv7 搭建Web GUI

目录0相关资料:1Gradio介绍2环境搭建3Gradio+YOLOv54Gradio+YOLOv75源码解释0相关资料:Gradio-YOLOv5-Det:https://gitee.com/CV_Lab/gradio_yolov5_det【手把手带你实战YOLOv5-入门篇】YOLOv5Gradio搭建WebGUI

Ae 效果:CC Kernel

颜色校正/CCKernelColorCorrection/CCKernelCCKernel(CC卷积核)效果主要用于图像的卷积处理,通过在卷积矩阵中设置不同的权重值,可以实现图像的锐化Sharpen、模糊Blur、查找边缘FindEdges以及浮雕Emboss等效果。◆◆◆效果原理说明卷积矩阵ConvolutionMa

【英杰送书第三期】Spring 解决依赖版本不一致报错 | 文末送书

Yan-英杰的主悟已往之不谏知来者之可追C++程序员,2024届电子信息研究生目录问题描述报错信息如下报错描述解决方法总结【粉丝福利】【文末送书】目录:本书特色:问题描述报错信息如下Description:Anattemptwasmadetocallamethodthatdoesnotexist.Theattemptw

【计算机视觉|人脸建模】深度学习时代的3D人脸重建调查报告

本系列博文为深度学习/计算机视觉论文笔记,转载请注明出处标题:3DFaceReconstructioninDeepLearningEra:ASurvey链接:3DFaceReconstructioninDeepLearningEra:ASurvey-PubMed(nih.gov)摘要随着深度学习的出现和图形处理单元的广

公司内部网段太多,管控混乱,该如何规范跨网文件传输交换?

在当今的信息化时代,文件传输交换是企业日常工作中不可或缺的一项功能。无论是内部员工之间,还是与外部合作伙伴之间,都需要频繁地进行文件的发送、接收、共享和协作。然而,由于企业内部网段的复杂性和多样性,以及数据安全和合规性的要求,跨网文件传输交换往往面临着诸多的困难和挑战。公司内部网段太多,管控混乱可能造成的问题企业内部网

热文推荐