导入 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 的时候需要的几个条件一定要注意。

相关文章
|
2月前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
84 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
4月前
|
SQL 分布式计算 MaxCompute
一种基于ODPS SQL的全局字典索引分布式计算思路
本文提供一种能充分利用分布式计算资源来计算全局字典索引的方法,以解决在大数据量下使用上诉方式导致所有数据被分发到单个reducer进行单机排序带来的性能瓶颈。
|
7月前
|
索引 Python
如何使用Python的Pandas库进行数据透视表(pivot table)操作?
使用Pandas在Python中创建数据透视表的步骤包括:安装Pandas库,导入它,创建或读取数据(如DataFrame),使用`pd.pivot_table()`指定数据框、行索引、列索引和值,计算聚合函数(如平均分),并可打印或保存结果到文件。这允许对数据进行高效汇总和分析。
83 2
|
7月前
|
SQL 数据采集 Java
Java【代码分享 02】商品全部分类数据获取(建表语句+Jar包依赖+树结构封装+获取及解析源代码)包含csv和sql格式数据下载可用
Java【代码分享 02】商品全部分类数据获取(建表语句+Jar包依赖+树结构封装+获取及解析源代码)包含csv和sql格式数据下载可用
82 0
|
分布式计算 Hadoop 关系型数据库
导入 Import--增量导入--Append 模式 | 学习笔记
快速学习 导入 Import--增量导入--Append 模式
354 0
导入 Import--增量导入--Append 模式 | 学习笔记
|
分布式计算 关系型数据库 MySQL
导入 Import--增量导入--Lastmodified 模式(Merge key 合并数据) | 学习笔记
快速学习 导入 Import--增量导入--Lastmodified 模式(Merge key 合并数据)
220 0
导入 Import--增量导入--Lastmodified 模式(Merge key 合并数据) | 学习笔记
|
SQL 分布式计算 关系型数据库
导入 Import--全量数据导入 Hive | 学习笔记
快速学习 导入 Import--全量数据导入 Hive
404 0
导入 Import--全量数据导入 Hive | 学习笔记
|
分布式计算 关系型数据库 MySQL
导入 Import--全量数据导入 Hdfs--并行度设置&注意事项 | 学习笔记
快速学习 导入 Import--全量数据导入 Hdfs--并行度设置&注意事项
223 0
导入 Import--全量数据导入 Hdfs--并行度设置&注意事项 | 学习笔记
|
分布式计算 Java 关系型数据库
导入 Import--增量导入--Lastmodified 模式(附加数据)| 学习笔记
快速学习 导入 Import--增量导入--Lastmodified 模式(附加数据)
125 0
|
SQL 分布式计算 数据挖掘
SQL、Pandas和Spark:如何实现数据透视表?
数据透视表是一个很重要的数据统计操作,最有代表性的当属在Excel中实现(甚至说提及Excel,个人认为其最有用的当属三类:好用的数学函数、便捷的图表制作以及强大的数据透视表功能)。所以,今天本文就围绕数据透视表,介绍一下其在SQL、Pandas和Spark中的基本操作与使用,这也是沿承这一系列的文章之一。
321 0
SQL、Pandas和Spark:如何实现数据透视表?