Sqoop 实际应用及样例
Sqoop 实际应用及自定query导出
前置条件
已经成功安装配置Hadoop以及Sqoop和Mysql数据库服务器,如果将数据导入或从Hbase导出,还应该已经成功安装配置Hbase。
示例如何将Oracle中的数据导出到Hdfs中,query参数中为导出的查询sql,如查询语句中有where 条件则最后追加 and \$CONDITIONS
nohup /home/hadoop/sqoop/bin/sqoop import
--connect jdbc:oracle:thin:@192.168.10.33:1521:orcl
--username runvista
--password runco
--fields-terminated-by '\0001'
-m 6
--split-by idnum
--target-dir airport
--delete-target-dir
--compress
--as-textfile
--query "select replace(a.mac,':',''),a.idtype,a.idnum,trunc(to_number(a.visittime-to_date('1970-01-01 8:0:0','yyyy-MM-DD HH24:MI:SS'))*24*60*60) visittime,trunc(to_number(a.createtime-to_date('1970-01-01 8:0:0','yyyy-MM-DD HH24:MI:SS'))*24*60*60),trunc(to_number(a.offtime-to_date('1970-01-01 8:0:0','yyyy-MM-DD HH24:MI:SS'))*24*60*60),d.placeaddressfrom airportdata aleft join dic don a.remoteip = d.placeip
where a.remoteip is not null and length(a.mac)>10 and \$CONDITIONS " & > /dev/null
/*
*导出hdfs上的数据
*/
hadoop fs -copyToLocal /user/hadoop/airport/* /tmp/
/*
*解压导出的数据
*/
gunzip /tmp/airport/*.gz
Sqoop在import时,需要制定split-by参数。Sqoop根据不同的split-by参数值来进行切分,然后将切分出来的区域分配到不同map中。每个map中再处理数据库中获取的一行一行的值,写入到HDFS中(由此也可知,导入导出的事务是以Mapper任务为单位)。同时split-by根据不同的参数类型有不同的切分方法,如比较简单的int型,Sqoop会取最大和最小split-by字段值,然后根据传入的num-mappers来确定划分几个区域。 比如select max(split_by),min(split-by) from得到的max(split-by)和min(split-by)分别为1000和1,而num-mappers为2的话,则会分成两个区域(1,500)和(501-100),同时也会分成2个sql给2个map去进行导入操作,分别为select XXX from table where split-by>=1 and split-by<500和select XXX from table where split-by>=501 and split-by<=1000。最后每个map各自获取各自SQL中的数据进行导入工作。
参数解释
数据导入工具import
import工具,是将HDFS平台外部的结构化存储系统中的数据导入到Hadoop平台,便于后续分析。我们先看一下import工具的基本选项及其含义,如下表所示:
表格
Markdown Extra 表格语法:
选项 | 含义说明 |
---|---|
–append | 将数据追加到HDFS上一个已存在的数据集上 |
–as-avrodatafile | 将数据导入到Avro数据文件 |
–as-sequencefile | 将数据导入到SequenceFile |
–as-textfile | 将数据导入到普通文本文件(默认) |
–boundary-query | 边界查询,用于创建分片(InputSplit) |
–columns | 从表中导出指定的一组列的数据 |
–delete-target-dir | 如果指定目录存在,则先删除掉 |
–direct | 使用直接导入模式(优化导入速度) |
–direct-split-size | 分割输入stream的字节大小(在直接导入模式下) |
–fetch-size | 从数据库中批量读取记录数 |
–inline-lob-limit | 设置内联的LOB对象的大小 |
-m,–num-mappers | 使用n个map任务并行导入数据 |
-e,–query | 导入的查询语句 |
–split-by | 指定按照哪个列去分割数据 |
–table | 导入的源表表名 |
–target-dir | 导入HDFS的目标路径 |
–warehouse-dir | HDFS存放表的根路径 |
–where | 指定导出时所使用的查询条件 |
-z,–compress | 启用压缩 |
–compression-codec | 指定Hadoop的codec方式(默认gzip) |
–null-string | 果指定列为字符串类型,使用指定字符串替换值为null的该类列的值 |
–null-non-string | 如果指定列为非字符串类型,使用指定字符串替换值为null的该类列的值 |
数据导出工具export
export工具,是将HDFS平台的数据,导出到外部的结构化存储系统中,可能会为一些应用系统提供数据支持。我们看一下export工具的基本选项及其含义,如下表所示:
选项 | 含义说明 |
---|---|
–validate | 启用数据副本验证功能,仅支持单表拷贝,可以指定验证使用的实现类 |
–validation-threshold | 指定验证门限所使用的类 |
–direct | 使用直接导出模式(优化速度) |
–export-dir | 导出过程中HDFS源路径 |
-m,–num-mappers | 使用n个map任务并行导出 |
–table | 导出的目的表名称 |
–call | 导出数据调用的指定存储过程名 |
–update-key | 更新参考的列名称,多个列名使用逗号分隔 |
–update-mode | 指定更新策略,包括:updateonly(默认)、allowinsert |
–input-null-string | 使用指定字符串,替换字符串类型值为null的列 |
–input-null-non-string | 使用指定字符串,替换非字符串类型值为null的列 |
–staging-table | 在数据导出到数据库之前,数据临时存放的表名称 |
–clear-staging-table | 清除工作区中临时存放的数据 |
–batch | 使用批量模式导出 |
Sqoop 实际应用及样例相关推荐
- YOLOv4 资源环境配置和测试样例效果
YOLOv4 资源环境配置和测试样例效果 基本环境:cuda=10.0,cudnn>=7.0, opencv>=2.4 一.下载yolov4 git clone https://githu ...
- 2021年大数据常用语言Scala(三十二):scala高级用法 样例类
目录 样例类 定义样例类 样例类方法 样例对象 样例类 样例类是一种特殊类,它可以用来快速定义一个用于保存数据的类(类似于Java POJO类),而且它会自动生成apply方法,允许我们快速地创建样例 ...
- 在Ubuntu下构建Bullet以及执行Bullet的样例程序
在Ubuntu下构建Bullet以及执行Bullet的样例程序 1.找到Bullet的下载页,地址是:https://code.google.com/p/bullet/downloads/list 2 ...
- JDBC连接MySQL数据库及演示样例
JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识 JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...
- Oracle简单脚本演示样例
Oracle简单脚本演示样例 1.添加表 --改动日期:2014.09.21 --改动人:易小群 --改动内容:新增採购支付情况表 DECLARE VC_STR VARCHAR2( ...
- 【ZooKeeper Notes 3】ZooKeeper Java API 使用样例
查看PDF版本 转载请注明:@ni掌柜 nileader@gmail.com ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务框架,包含一组简单的原语集合.通过这些原语言的组合使用, ...
- ACMNO.24 C语言-转置矩阵 写一个函数,使给定的一个二维数组(3×3)转置,即行列互换。 输入 一个3x3的矩阵 输出 转置后的矩阵 样例
题目描述 写一个函数,使给定的一个二维数组(3×3)转置,即行列互换. 输入 一个3x3的矩阵 输出 转置后的矩阵 样例输入 1 2 3 4 5 6 7 8 9 样例输出 1 4 7 2 5 8 3 ...
- ACMNO.21 C语言-逆序输出 输入10个数字,然后逆序输出。 输入 十个整数 输出 逆序输出,空格分开 样例输入 1 2 3 4 5 6 7 8 9 0
题目描述 输入10个数字,然后逆序输出. 输入 十个整数 输出 逆序输出,空格分开 样例输入 1 2 3 4 5 6 7 8 9 0 样例输出 0 9 8 7 6 5 4 3 2 1 提示 数组?堆栈 ...
- ACMNO.19 C语言-对角求和 求一个3×3矩阵对角线元素之和。 输入 矩阵 输出 主对角线 副对角线 元素和 样例输入 1 2 3 1 1 1 3 2 1 样例输出 3 7
这个我做了改进,可以实现NXN的矩阵.求出对角线之和! 只需要修改定义的define z的值就好! 接下来,进入正题! 题目描述: 求一个3×3矩阵对角线元素之和. 输入 矩阵 输出 主对角线 副对角 ...
最新文章
- MySQL数据库中外键SQL语句的编写
- ASP.NET中全局变量
- python有趣的面试题_python面试题目
- SMTP 错误代码大全
- 在自己的电脑上搭建服务器(可供对外访问)
- .NET Core 3.0中的新功能和增强功能
- python反归一化_pytorch 归一化与反归一化实例
- 创造与魔法服务器多久维护一次,创造与魔法维护大概多久 | 手游网游页游攻略大全...
- 计算材料学与第一性原理、分子动力学、蒙特卡洛计算方法
- 微信小程序|小程序自定义底部导航栏
- ASTC 自适应可伸缩纹理压缩
- POE交换机和普通交换机哪里不同?POE交换机和普通交换机哪个好?
- QT之远程控制对方电脑
- 《重构:改善既有代码的设计》读书笔记(上)
- 目标检测+图像分割项目
- 2021四川省资阳市高考成绩查询,2021资阳中考查询系统
- Flink常见的面试题
- 生物信息学|MOLI:基于深度神经网络进行多组学数据整合并用于药物反应预测
- python实用的PDF自动化办公:解密、加水印、PPT/Word/TxT转PDF
- 1041: 助推-滑翔弹道(钱学森弹道)(1级)输入一个正整数,表示滑翔总距离L。输出中程导弹的升阻比,结果保留0位小数。提示:可以用“%.0f”输出结果。
热门文章
- java调用ltp_LTP随笔——本地调用ltp之ltp4j
- Oracle ASMM和AMM
- DHTMLXGantt in Flutter DHTMLXGantt
- azkaban 调度任务一直处于preparing状态
- 苹果计算机如何出现关机界面,电脑关机.教您苹果电脑怎么关机
- 入侵和攻击模拟(BAS)实践
- Web 2.3.2 OpenVAS使用初探 / GVM使用入门教程(超详细)
- 1788. 牛为什么过马路
- Graphics Layer Tree创建
- python爬虫 403 Forbidden 解决方法