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 实际应用及样例相关推荐

  1. YOLOv4 资源环境配置和测试样例效果

    YOLOv4 资源环境配置和测试样例效果 基本环境:cuda=10.0,cudnn>=7.0, opencv>=2.4 一.下载yolov4 git clone https://githu ...

  2. 2021年大数据常用语言Scala(三十二):scala高级用法 样例类

    目录 样例类 定义样例类 样例类方法 样例对象 样例类 样例类是一种特殊类,它可以用来快速定义一个用于保存数据的类(类似于Java POJO类),而且它会自动生成apply方法,允许我们快速地创建样例 ...

  3. 在Ubuntu下构建Bullet以及执行Bullet的样例程序

    在Ubuntu下构建Bullet以及执行Bullet的样例程序 1.找到Bullet的下载页,地址是:https://code.google.com/p/bullet/downloads/list 2 ...

  4. JDBC连接MySQL数据库及演示样例

    JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识         JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...

  5. Oracle简单脚本演示样例

    Oracle简单脚本演示样例 1.添加表 --改动日期:2014.09.21 --改动人:易小群 --改动内容:新增採购支付情况表 DECLARE VC_STR           VARCHAR2( ...

  6. 【ZooKeeper Notes 3】ZooKeeper Java API 使用样例

    查看PDF版本 转载请注明:@ni掌柜 nileader@gmail.com ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务框架,包含一组简单的原语集合.通过这些原语言的组合使用, ...

  7. 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 ...

  8. 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 提示 数组?堆栈 ...

  9. ACMNO.19 C语言-对角求和 求一个3×3矩阵对角线元素之和。 输入 矩阵 输出 主对角线 副对角线 元素和 样例输入 1 2 3 1 1 1 3 2 1 样例输出 3 7

    这个我做了改进,可以实现NXN的矩阵.求出对角线之和! 只需要修改定义的define z的值就好! 接下来,进入正题! 题目描述: 求一个3×3矩阵对角线元素之和. 输入 矩阵 输出 主对角线 副对角 ...

最新文章

  1. MySQL数据库中外键SQL语句的编写
  2. ASP.NET中全局变量
  3. python有趣的面试题_python面试题目
  4. SMTP 错误代码大全
  5. 在自己的电脑上搭建服务器(可供对外访问)
  6. .NET Core 3.0中的新功能和增强功能
  7. python反归一化_pytorch 归一化与反归一化实例
  8. 创造与魔法服务器多久维护一次,创造与魔法维护大概多久 | 手游网游页游攻略大全...
  9. 计算材料学与第一性原理、分子动力学、蒙特卡洛计算方法
  10. 微信小程序|小程序自定义底部导航栏
  11. ASTC 自适应可伸缩纹理压缩
  12. POE交换机和普通交换机哪里不同?POE交换机和普通交换机哪个好?
  13. QT之远程控制对方电脑
  14. 《重构:改善既有代码的设计》读书笔记(上)
  15. 目标检测+图像分割项目
  16. 2021四川省资阳市高考成绩查询,2021资阳中考查询系统
  17. Flink常见的面试题
  18. 生物信息学|MOLI:基于深度神经网络进行多组学数据整合并用于药物反应预测
  19. python实用的PDF自动化办公:解密、加水印、PPT/Word/TxT转PDF
  20. 1041: 助推-滑翔弹道(钱学森弹道)(1级)输入一个正整数,表示滑翔总距离L。输出中程导弹的升阻比,结果保留0位小数。提示:可以用“%.0f”输出结果。

热门文章

  1. java调用ltp_LTP随笔——本地调用ltp之ltp4j
  2. Oracle ASMM和AMM
  3. DHTMLXGantt in Flutter DHTMLXGantt
  4. azkaban 调度任务一直处于preparing状态
  5. 苹果计算机如何出现关机界面,电脑关机.教您苹果电脑怎么关机
  6. 入侵和攻击模拟(BAS)实践
  7. Web 2.3.2 OpenVAS使用初探 / GVM使用入门教程(超详细)
  8. 1788. 牛为什么过马路
  9. Graphics Layer Tree创建
  10. python爬虫 403 Forbidden 解决方法