导入 Import--表子集数据导入 | 学习笔记

简介: 快速学习 导入 Import--表子集数据导入

开发者学堂课程【Sqoop 企业级大数据迁移方案实战导入 Import--表子集数据导入】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/718/detail/12837


导入 Import--表子集数据导入


内容介绍:

一、where 过滤

二、query 过滤


子集为表当中数据的一部分。之前进行表数据导入的操作的时候,相当于于把表中数据全部导入。在企业中往往有需求,比如导入雇员表,固定编号1204之后的,比如1204是18年入职的,后面有哪些人入职,这时在导入数据的时候就可以加入一些简单条件过滤一下比如说薪水大于5000的人,这些 sqoop 可以帮我们完成。在 sqoop 中支持两种方式进行表数据子集的导入,一种比较简单叫作 where 条件过滤,另一比较复杂叫作是 query 查询过滤,相当于并列一个 sql 。


一、where 过滤

where 条件过滤这种导入子集的方式是在 sqoop 语言当中加上一个参数叫作 --where , where 后面往往可以跟着一个条件 select 新发现一张表 where 等于多少或者 where 大于多少,相当于在执行在执行关系型数据库导入数据的时候会跟上条件,把满足这个条件的数据保留下来进行导入操作。

--where 可以指定从关系数据库导入数据时的查询条件。他执行在数据库服务器相应的 SQL 查询,并将结果存储在 HDFS 的目标目录。

bin/sqoop import\ (表示数据的导入)

--connect jdbc:mysql://node-1:3306/sqoopdb\

--username root\

--password hadoop\

--where“city=‘sec-bad’”\

--target –dir /wherequery\

--table emp_add—m1

image.png

首先 bin/sqoop import\表示数据的导入,emp_add 为地址表,首先并不是把所有的数据全部导入,其中加了一个条件 —wherecity=sec-bad’,city 为表中的一个字段,相当于我们在导入表序中加一个条件,只把满足 city=sec-bad 的条件过滤出来,导入到 wherequery ,看看能否满足过滤所谓的子集数据。打开 sqoop 脚本,从脚本中复制相关信息,然后打开 sqoop 进行一个执行,我们只关注结果导入了几条以及导入的数据对不对,

image.png

发现之后只有三个记录,从数量上看是没有问题的,但是内容不一定正确,

image.png

接下来打开 HDFS 页面

image.png

wherequery 路径下进行一个查询,发现有标识,打开 wherequery 然后把他下载下来,进行验证,city 字段全部都是 city=sec-bad ,打开发现没有问题,说明其他不满足的数据就被过滤掉了。

image.png

文件中的一些数据就是 sqoop 表格中数据的部分子集。但是这种过滤比较简单,所发挥的功能也比较有限。如果wherequery 表中还有更多的需求,比如个人隐私不希望出现,只想看他的 id 、和他所在城市等等,这时候用 where 表达就比较复杂,这个时候就需要使用 query 查询。

 

二、query 过滤

Query 查询本质是在查询导入时执行一个 SQL 语句,只不过在 sqoop --query 有非常多的限制,如果不按照要求来,就会报错。

注意事项:

使用 query sql 语句来进行查找,不能加参数--table

并且需要添加 where 条件;

并且 where 条件后面必须带一个 $CONDITIONS 这个字符串

并且这个 sql 语句必须用单引号,不能用双引号:

bin/sqoop import\(表示数据的导入)

--connect jdbc:mysql://node-1:3306/sqoopdb\

--username root\

--password hadoop\

--target dir /wherequery12\(导出路径)

--query select idnamedeg from emp WHERE id1203 and $CONDITIONS\

--split-by id\

--fields-terminated-by\t\

--m2

sqoop 命令中, -- split-by id 通常配合 —m10 参数使用。用于制定根据哪个字段进行划分并启动多个 maptask

有了 --query select idnamedeg from emp WHERE id1203 and $CONDITIONS\不再需要--table,已经出现在了 query 语句当中,上面已经有了表名。存储位置已经加入了query 语句,from 后面有了表名,所以不需要再加表名。

select idnamedeg from emp 为雇员信息表,只需要 idnamedeg 这几列,加上条件 where1203表示只需要表格中12041205这两个,但是后面的语法与标准的 sql 语法不太一样,必须要添加 where 条件, where 条件后面必须添加$CONDITIONS 字符串, sql 语句必须用单引号,不能用双引号。有一个条件不一样就会进行报错

没有 where 条件时,比如导出数据时不需要大于210几,可以写一个 where id1,最好的方式为后面写一个 where1=1,这样就不判断永远满足,但是要迎合前面那些条件。但是四个注意事项必须牢牢记住。

image.png

实现子表集的导出,只导出当中的某些字段。打开脚本,复制相关的命令,打开 sqoop 进行相关命令的执行操作,要保证 ip 端口,用户名,路径保持一致,最后导入两条记录。数量正确,查看内容只需要 idnamedeg 这三个字段,到达导出路径确认 wherequery 页 ,打开 web 页面,

image.png

首先发现上面两个文件,说明刚才设置的并行路产生的效果,采用两个并行导出,这里需要结合具体的操作环境。下载下来进行相关的验证。这样就完成了相关数据子集的导出操作。

第一个字段,分隔符为-001,第二个字段,第三个字段,很好导入。

image.png

这样就完成了指定的子集,而且是指定的字段,指定 id 大于的标准,指定的分隔符,这样就完成了数据的子集的导出操作。结合环境来具体改变,尤其是进行 wherequery 的时候需要的几个条件一定要注意。

相关文章
|
数据采集 运维 算法
大数据项目管理:从需求分析到成果交付的全流程指南
【4月更文挑战第9天】本文介绍了大数据项目从需求分析到成果交付的全过程,包括需求收集与梳理、可行性分析、项目规划、数据准备与处理、系统开发与集成,以及成果交付与运维。文中通过实例展示了如何进行数据源接入、数据仓库建设、系统设计、算法开发,同时强调了需求理解、知识转移、系统运维的重要性。此外,还提供了Python和SQL代码片段,以说明具体技术实现。在大数据项目管理中,需结合业务和技术,灵活运用这些方法,确保项目的成功执行和价值实现。
3329 1
|
存储 监控 NoSQL
Redis大Key问题如何排查?如何解决?
Redis大Key问题如何排查?如何解决?
512 0
Redis大Key问题如何排查?如何解决?
|
11月前
|
负载均衡 算法 Linux
深入探索Linux内核调度机制:公平与效率的平衡####
本文旨在剖析Linux操作系统内核中的进程调度机制,特别是其如何通过CFS(完全公平调度器)算法实现多任务环境下资源分配的公平性与系统响应速度之间的微妙平衡。不同于传统摘要的概览性质,本文摘要将直接聚焦于CFS的核心原理、设计目标及面临的挑战,为读者揭开Linux高效调度的秘密。 ####
234 3
|
存储 Linux Docker
Linux——快速安装Docker
Linux——快速安装Docker
310 1
|
传感器 容器
电容式水传感器的工作原理
电容式水传感器通过测量水的介电常数变化来检测水分。当传感器接触到水时,其电容值会发生变化,从而触发信号输出,实现对水分的精确检测。广泛应用于农业、环境监测等领域。
|
SQL 关系型数据库 MySQL
Go语言项目高效对接SQL数据库:实践技巧与方法
在Go语言项目中,与SQL数据库进行对接是一项基础且重要的任务
261 11
|
消息中间件 存储 监控
解决方案 | 云消息队列RabbitMQ实践
在实际业务中,网站因消息堆积和高流量脉冲导致系统故障。为解决这些问题,云消息队列 RabbitMQ 版提供高性能的消息处理和海量消息堆积能力,确保系统在流量高峰时仍能稳定运行。迁移前需进行技术能力和成本效益评估,包括功能、性能、限制值及费用等方面。迁移步骤包括元数据迁移、创建用户、网络打通和数据迁移。
343 4
|
存储 算法 索引
从菜鸟到大神:一文带你彻底搞懂Python中的后缀树Suffix Tree奥秘!
在Python编程中,后缀树是一种高效的数据结构,特别适用于处理复杂的字符串问题,如搜索、最长公共前缀查询及最长重复子串查找等。本文通过问答形式介绍后缀树的基本概念、重要性及其实现方法。后缀树能显著提高字符串处理效率,将传统方法的时间复杂度从O(nm)降至接近O(m)。尽管其构建过程较复杂,但通过手动编写代码或使用第三方库,我们可以在Python中实现这一强大工具。后缀树的应用广泛,涵盖字符串搜索、压缩、生物信息学等多个领域,学习它不仅能帮助解决实际问题,更能提升算法思维和数据结构设计能力。
367 1
|
机器学习/深度学习 存储 缓存
基于Elasticsearch的聊天机器人开发指南
【8月更文第28天】聊天机器人是一种越来越流行的交互式工具,它们能够模拟人类对话,帮助用户获取信息或完成特定任务。结合Elasticsearch的强大搜索能力和机器学习技术,可以构建出具有高度智能化的聊天机器人。本文将详细介绍如何使用Elasticsearch以及相关的人工智能技术来开发一个智能聊天机器人,并提供一些具体的代码示例。
294 0
|
网络架构
Ensp+Wireshark+VirtualBox+WinPcap
Ensp+Wireshark+VirtualBox+WinPcap
447 1