Sqoop的基础应用
实验目的要求
- 了解ET了工具Sqoop;
- 学会安装配置Sqoop;
- 学会使用数据迁移框架Sqoop;
- 使用Sqoop导入MySQL到HDFS和Hive;
- 使用Sqoop导出HDFS数据到MySQL;
实验环境
- Java jdk 1.7;
- apache-maven-3.6.0;
- Myeclipse C10;
- CDH Hadoop集群;
- 已配置MySQL数据库;
- 已配置Sqoop工具;
- 具体规划:
主机名 | IP地址 | 服务描述 |
Cmaster | 192.168.159.170 | 主控节点 |
Cslaver1 | 192.168.159.171 | 数据节点 |
Cslaver2 | 192.168.159.172 | 数据服务 |
实验内容
任务一: 启动CDH_Hadoop集群,并检查sqoop工具;
1、进入控制台页面;
2、启动相关组件;
任务二:使用Sqoop;
1、准备MySQL数据库数据;
2、使用Sqoop测试与MySQL的连通;
命令:
sqoop import \
--connect jdbc:mysql://192.168.159.170:3306/sqoop \
--username root \
--password 123456 \
3、使用Sqoop导入MySQL数据到HDFS;
命令:
sqoop import \
--connect jdbc:mysql://192.168.159.170:3306/sqoop \
--username root \
--password 123456 \
--table emp -m 1 \
--columns "empno,ename,job,sal,comm" \
--target-dir emp_column \
--delete-target-dir
4、使用指定压缩格式及存储格式;
命令:
sqoop import \
> --connect jdbc:mysql://192.168.159.170:3306/sqoop \
> --username root \
> --password 123456 \
> --table emp \
> -m 1 \
> --columns "empno,ename,job,sal,comm" \
> --target-dir emp_parquet \
> --delete-target-dir \
> --as-parquetfile \
> --compression-codec org.apache.hadoop.io.compress.SnappyCodec
5、使用指定分隔符;
命令:
sqoop import \
--connect jdbc:mysql://192.168.159.170:3306/sqoop \
--username root \
--password 123456 \
--table emp -m 1 \
--columns "EMPNO,ENAME,JOB,SAL,COMM" \
--target-dir emp_colimn_split \
--delete-target-dir \
--fields-terminated-by '\t' \
--lines-terminated-by '\n'
6、导入指定条件的数据;
命令:
sqoop import \
--connect jdbc:mysql://192.168.159.170:3306/sqoop \
--username root \
--password 123456 \
--table emp -m 1 \
--columns "EMPNO,ENAME,JOB,SAL,COMM" \
--target-dir emp_colimn_where \
--delete-target-dir \
--where 'SAL>2000'
7、导入指定查询语句的数据;
命令:
sqoop import \
--connect jdbc:mysql://192.168.159.170:3306/sqoop \
--username root \
--passw 123456 \
--target-dir emp_column_query \
--delete-target-dir \
--query 'select * from emp where EMPNO>=7900 and $CONIONS' \
--fields-terminated-by '\t' \
--lines-terminated-by '\n' -m 1 \
--split-by 'emp'
8、使用Sqoop导出HDFS数据到MySQL;
命令:
>create table emp_demo as select * from emp where 1=2;
命令:
$hdfs dfs -mkdir -p /usr/hadoop/emp
命令:
sqoop export \
--connect jdbc:mysql://192.168.159.170:3306/sqoop \
--username root \
--password 123456 \
--table emp_demo \
--export-dir /usr/hadoop/emp -m 1
9、导出指定字段
命令:
hdfs dfs -mkdir -p /usr/hadoop/emp_colum
hdfs dfs -ls /usr/hadoop/
命令:
sqoop export \
> --connect jdbc:mysql://192.168.159.170:3306/sqoop \
> --username root \
> --password 123456 \
> --table emp_demo \
> --columns "EMPNO,ENAME,JOB,SAL,COMM" \
> --export-dir /usr/hadoop/emp_colum -m 1
10、导出表示指定分隔符
命令:
hdfs dfs -mkdir -p /usr/hadoop/emp_column_split
hdfs dfs -ls /usr/hadoop/
命令:
sqoop export \
> --connect jdbc:mysql://192.168.159.170:3306/sqoop \
> --username root \
> --password 123456 \
> --table emp_demo \
> --columns "EMPNO,ENAME,JOB,SAL,COMM" \
> --export-dir /usr/hadoop/emp_column_split \
> --fields-terminated-by '\t' \
> --lines-terminated-by '\n' -m 1
11、批量导出
命令:
sqoop export \
> -Dsqoop.export.records.pre.statement=10 \
> --connect jdbc:mysql://192.168.159.170:3306/sqoop \
> --username root \
> --password 123456 \
> --table emp_demo \
> --export-dir /usr/hadoop/emp -m 1
12、使用Sqoop导入MySQL数据到Hive中
命令:
sqoop create-hive-table \
--connect jdbc:mysql://192.168.159.170:3306/sqoop \
--username root \
--password 123456 \
--table emp \
--hive-table emp_import
13、导入表的指定字段到Hive中
命令:
create table emp_column(empno int,ename string,job string,mgr int,hiredate string,sal double,comm double,deptno int) row format delimited fields terminated by '\t' lines terminated by '\n';
任务三:将常用的Sqoop脚本定义成作业,方便其他人调用(因为版本问题,此处使用sqoop2)
1、进入sqoop-shell,创建MySQL数据库连接;
2、查看连接信息;
3、创建HDFS文件系统连接;
命令:
>create link -connector hdfs-connector
4、创建数据传输服务(从MySQL到hdfs);
命令:
>create job f sqoop -t hdfs
5、启动job任务;
命令:
>start job -n jobsqoop
6、查看job任务状态;
命令:
>status job -n jobsqoop
出现的问题与解决方案
排错一:
错误:导入指定查询语句的数据失败
排错思路:
- 查看日志分析原因;
- 根据报错提示分析
原因分析:参数query和table不能同时使用
解决方案:
命令:
sqoop import \
--connect jdbc:mysql://192.168.159.170:3306/sqoop \
--username root \
--passw 123456 \
--target-dir emp_column_query \
--delete-target-dir \
--query 'select * from emp where EMPNO>=7900 and $CONIONS' \
--fields-terminated-by '\t' \
--lines-terminated-by '\n' -m 1 \
--split-by 'emp'
排错二:
错误:测试sqoop1版本与mysql是否互通出错;
排错思路:
- 分析日志及错误原因;
- 分析错误提示
原因分析:缺少jar包;
解决方案:在sqoop的lib目录下加入所缺jar包,添加后正常;
知识拓展
sqoop 是 apache 旗下一款“Hadoop 和关系数据库服务器之间传送数据”的工具。
核心的功能有两个:
导入、迁入
导出、迁出
导入数据:MySQL,Oracle 导入数据到 Hadoop 的 HDFS、HIVE、HBASE 等数据存储系统
导出数据:从 Hadoop 的文件系统中导出数据到关系数据库 mysql 等 Sqoop 的本质还是一个命令行工具,和 HDFS,Hive 相比,并没有什么高深的理论。
sqoop:工具:本质就是迁移数据, 迁移的方式:就是把sqoop的迁移命令转换成MR程序
hive工具,本质就是执行计算,依赖于HDFS存储数据,把SQL转换成MR程序
2. 工作机制
将导入或导出命令翻译成 MapReduce 程序来实现 在翻译出的 MapReduce 中主要是对 InputFormat 和 OutputFormat 进行定制
相关文章:

hadoop程序MapReduce之SingletonTableJoin
需求:单表关联问题。从文件中孩子和父母的关系挖掘出孙子和爷奶关系 样板:child-parent.txt xiaoming daxiong daxiong alice daxiong jack 输出:xiaoming alice xiaoming jack 分析设计: mapper部分设计: 1、<k1,…
Android网络框架Volley的快速使用
一.基本使用 之前做Android开发都是使用学长自己封装好的网络请求框架,第三方网络框架也很多,网上搜索了一下,大多数人推荐使用 android-async-httpokhttpVolley 其中Volley是Google推出了官方的针对Android平台上的网络通信库,能…

浏览器版本过低
http://study.163.com/common/errors/notSupported.htm <div class"wb f-cb"> <a href"http://www.google.cn/intl/zh-CN/chrome/browser/" class"g f-hide" target"_blank">谷歌浏览器</a> <a href"http:/…

Spark的基础应用
目的要求 搭建Spark集群环境;Spark集群的启动、浏览与关闭;使用Eclipse编写Spark应用程序包;如何运行Spark任务; 实验环境 Java jdk 1.7;apache-maven-3.6.0;Eclipse;Apache_Hadoop集群&#…

HDU-2084 数塔 经典dp,水
1、HDU-2084 数塔 2、链接:http://acm.hdu.edu.cn/showproblem.php?pid2084 3、总结:从下往上推,最后归于顶点。方程为 dp[i][j] max(dp[i1][j],dp[i1][j1])a[i][j] #include<iostream> #include<cstring> #include<…
[16] 螺旋面(Spire)图形的生成算法
顶点数据的生成 1 bool YfBuildSpireVertices2 (3 Yreal radius, 4 Yreal assistRadius, 5 Yreal height, 6 Yuint slices,7 Yuint s…
iOS的页面跳转
1.通过NavigationController跳转 这个方式适用于根视图为NavigationController的控制器,首先,在storyboard中给跳转的目标控制器视图设置Identifier,名字自定,我这里直接使用Controller对应的名字,如图1:需…
最新Java面试题答案
JAVA基础 JAVA中的几种基本类型,各占用多少字节? 下图单位是bit,非字节 1B8bit String能被继承吗?为什么? 不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改…

fedora装机后要运行的脚本(原创)
脚本:sh.sh 1 #!/bin/zsh2 #安装rpmfusion源3 dnf config-manager --add-repohttp://repo.fdzh.org/FZUG/FZUG.repo4 #安装一下有用的一些软件包5 yum -y install yum-fastestmirror 6 yum -y install unrar7 yum -y install thunderbird8 yum -y install emacs9 yum -y instal…
【Android】FragmentTabHost实现底部Tab菜单选项
以前实现类似微博底部菜单使用的是TabHostActivity来实现,但是使用的时候提醒已经被弃用,现在我们可以通过FragmentTabHostFragment来实现。下面就是demo: 1.main_activity.xml 主布局文件。 <LinearLayout xmlns:android"http://sc…

mysql远程访问,修改root密码
mysql -uroot -p #input password use mysql; update user set host% where userroot; flush privileges; #ok 密码root密码也可以改: 先停止正在运行的mysql实例,在配置文件/etc/my.cnf里面加入 skip-grant-tables, 重新启动Mysql 或者使用…
java面试题2019 答案
Java 面试随着时间的改变而改变。在过去的日子里,当你知道 String 和 StringBuilder 的区别(String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象。因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String…

android layout analyze
adapterapientityhandleruiuntilwidgetappContent.java *************************************图片:drawable:存放各种位图文件,(.png,.jpg,.9png,.gif等)除此之外可能是一些其他的drawable类型的XML文件m…

【转】iOS开发学习计划
转自:简书 一、C语言基础 基本数据类型、基本运算、函数、数组、字符串、指针、结构体、预处理指令、枚举、文件操作、内存管理 二、Objective-C 1、Objective-C基本语法 数据类型、表达式、变量、循环结构、选择结构 2、Objective-C面向对象 类、对象、继承、自省…

[置顶] 单例模式lua实现
--[[优点一、实例控制单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。二、灵活性因为类控制了实例化过程,所以类可以灵活更改实例化过程。缺点一、开销虽然数量很少,但如果每次对象请求引用时都要检查…

我在CSDN的第一个1024
1024程序员节日历史 2002年,俄罗斯程序员Valentin Balt收集签名,向俄罗斯联邦政府请愿将9月13日设定为程序员节。 2009年9月11日,俄罗斯总统梅德韦杰夫在节日安排方案上签了名,“程序员节”从此成为了俄罗斯的一个正式节日。除了俄…

【转】判断UIViewController是否正在显示
最近做一个项目,要判断某个ViewController是否正在与用户交互、显示,百度了一下,这篇文章解决了我的问题,故转之:http://edsioon.me/if-uiviewcontroller-is-display/ 某些情况下,需判断当前ViewController…

c#中如何跨线程调用windows窗体控件?
我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题。然而我们并不能用传统方法来做这个问题,下面我将详细的介绍。首先来看传统方法: public partial class Form1 : Form{public Form1(){InitializeCompone…

poj 1964 Cow Cycling(dp)
/* 一开始想的二维的 只维护第几只牛还有圈数 后来发现每只牛的能量是跟随每个状态的 所以再加一维 f[i][j][k]表示第i只牛 领跑的j全 已经消耗了k体力 转移的话分两类 1.换一只牛领跑 那么就从f[i][j][k]转移到f[i1][j][j] 2.不换 那就枚举i领跑几圈l f[i][j-l][k-l*l]转移到…
高级网络配置《 bond team桥接 》的建立
bond 资料详情 一、链路聚合:以太网链路聚合简称链路聚合,它通过将多条以太网物理链路捆绑在一起成为一条逻辑链路,从而实现增加链路带宽的目的。同时,这些捆绑在一起的链路通过相互间的动态备份,可以有效地提高链路…
iOS通过CAShapeLayer和UIBezierPath画环形进度条
UIBezierPath可以绘制矢量路径,而CAShapeLayer是Layer的子类,可以在屏幕进行绘制,本文主要思想是:CAShapeLayer按照UIBezierPath的矢量路径进行绘制。 效果图如图: 方法如下: interface ViewController ()…

这些云计算技术你了解过哪几种
新霸哥发现目前信息量高速增长的今天,IT行业正在面临着空间和成本等资源的巨大压力,但是随着这些需求的日益增长,在行业中出现了一类全新的解决方案,通过云计算技术对数据中心进行改造。要获得云计算的优势,必须在it基…

Tomcat官方文档关于数据源配置的内容
虽然有网上有网友自己总结的文章,但说明得总是不够清晰,还是参考官方文档理解得比较透彻: http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html http://tomcat.apache.org/tomcat-7.0-doc/jndi-datasource-examples-howto.html 转载于:h…
利用kickstart自动安装虚拟机
虚拟机的手动安装 下载dhcp服务 systemctl stop firewalld getenforce setenforce 0 关闭防火墙 图中最后面添加一个 } yum install systemctl-4.05-8.el7.x86_64 rpm -ql syslinux rpm -ql tftp-server 在挂载…

第17章 使用iSCSI服务部署网络存储
章节概述: 本章节将分析SCSI与iSCSI技术结构的不同,了解iSCSI技术的优势、SAN存储网络技术结构以及iSCSI HBA卡的作用。 完整演示部署iSCSI target服务程序的方法流程:创建RAID阵列(5)后使用targetcli命令发布到iSCSI存储目录并创建ACL列表。…
【仿去哪儿】骆驼动画加载
简单的实现正在加载的动画,比较粗糙,没有实现后面的旋转地球。图一为去哪儿的截图,图二为本文实现的效果 图1 图2 一、新建LoadView继承自UIView,声明几个方法,这样在项目需要用到时,直接调用就行ÿ…

来自极客标签10款最新设计素材-系列十六
本周我们推荐来自极客标签社区带来的10款免费设计素材,大家可以在这里免费下载你需要的内容。如果你也有更好的作品,欢迎分享到社区中来,在得到帮助的同时,也能与更多人分享来自你的作品。 免费图标:扁平风格的图标集…
python简介、安装及基本设置
python简介 1、Python的定义: Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色…

MVC会员注册
自从写了《数据库数据加密与解密》http://www.cnblogs.com/insus/p/3434735.html。其中也有提及Insus.NET将要在MVC应用程序中实现会员注册的功能。一段时间来,工作繁忙,这个星六还要值班。现在算是忙里偷闲,继续写MVC的程序。本次要实现会员…

继承,基类,派生类
在 C中,继承机制通过类的派生实现,被继承的类称为基类或父类;在继承类的基础上创建的新类称为派生类或子类。派生类的定义格式为:class 派生类名:继承方式基类名 1,继承方式基类名 2,…,继承方式基类名 n{派生类增加的成员声明;};…