Sqooop- 使用Sqoop进行数据的导入导出
Sqoop是Apache旗下的一个开源框架,专门用来做数据的导入和导出。
Sqoop的安装非常简单,只需要把下载下来的tar包解压设置两个环境变量就可以了
1.安装部署
下载版本:sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
官网:http://mirror.bit.edu.cn/apache/sqoop/1.4.6/
1.1把tar包解压到/usr/sqoop
tar -xvzf sqoop-1.4..bin__hadoop-2.0.-alpha.tar.gz /usr/ //解压到指定路径 mv sqoop-1.4..bin__hadoop-2.0.-alpha.tar.gz sqoop //重命名,可选可不选
1.2设置环境变量
把Sqoop添加到PATH文件, vim /etc/profile ,设置
export SQOOP_HOME=/usr/sqoop
export PATH=$PATH:$SQOOP_HOME/bin
source /etc/profile
因为Sqoop需要用到hadoop下面的jar包进行操作,所以需要设置HADOOP_COMMON_HOME 来指明hadoop安装在那个目录下。
[root@srv01 ~]# export HADOOP_COMMON_HOME=/usr/hadoop //指明hadoop安装路径
[root@srv01 ~]# export HADOOP_MAPRED_HOME=/usr/hadoop //因为hadoop最终把它的作业转换成mapreduce进行提交执行,实际上和hadoop home目录相同
也可以用另一种方式,配置sqoop/conf目录下的sqoop-env.sh
vim sqoop-env.sh
把jdbc驱动包放到sqoop的lib目录下,如果里面有就不需要加(里面有个MySQL驱动包)。
1.3验证安装完成
输入 sqoop help ,如下面所示,表示安装正常,另,没有设置PATH变量的需要到sqoop/bin执行 ./sqoop help
[root@srv01 ~]# sqoop help
Warning: /usr/sqoop/../hcatalog does not exist! HCatalog jobs will fail.
Please set $HCAT_HOME to the root of your HCatalog installation.
Warning: /usr/sqoop/../accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
// :: INFO sqoop.Sqoop: Running Sqoop version: 1.4.
usage: sqoop COMMAND [ARGS] Available commands:
codegen Generate code to interact with database records
create-hive-table Import a table definition into Hive
eval Evaluate a SQL statement and display the results
export Export an HDFS directory to a database table
help List available commands
import Import a table from a database to HDFS
import-all-tables Import tables from a database to HDFS
import-mainframe Import datasets from a mainframe server to HDFS
job Work with saved jobs
list-databases List available databases on a server
list-tables List available tables in a database
merge Merge results of incremental imports
metastore Run a standalone Sqoop metastore
version Display version information See 'sqoop help COMMAND' for information on a specific command.
2.使用Sqoop进行数据迁移
下面通过6个例子展示使用Sqoop进行数据迁移
2.1使用Sqoop导入MySQL数据到HDFS
[root@srv01 ~]# sqoop import --connect jdbc:mysql://localhost:3306/test --username root --password root --table user --columns 'uid,uname' -m 1 -target-dir '/sqoop/user'; //-m 指定map进程数,-target-dir指定存放目录
2.2使用Sqoop导入MySQL数据到Hive中
[root@srv01 ~]# sqoop import --hive-import --connect jdbc:mysql://localhost:3306/test --username root --password root --table user --columns 'uid,uname' -m 1
2.3使用Sqoop导入MySQL数据到Hive中,并且指定表名
[root@srv01 ~]# sqoop import --hive-import --connect jdbc:mysql://localhost:3306/test --username root --password root --table user --columns 'uid,uname' -m 1 --hive-table user1; //如果hive中没有这张表,则创建这张表保存对应数据
2.4使用Sqoop导入MySQL数据到Hive中,并使用where条件
[root@srv01 ~]# sqoop import --hive-import --connect jdbc:mysql://localhost:3306/test --username root --password root --table user --columns 'uid,uname' -m 1 --hive-table user2 where uid=10;
2.5使用Sqoop导入MySQL数据到Hive中,并使用查询语句
[root@srv01 ~]# sqoop import --hive-import --connect jdbc:mysql://localhost:3306/test --username root --password root -m 1 --hive-table user6 --query 'select * from user where uid<10 and $conditions' --target-dir /sqoop/user5;
//and $conditions 必须加在查询语句中,不加报错
2.6使用Sqoop将Hive中的数据导出到MySQL中
[root@srv01 ~]# sqoop import --connect jdbc:mysql://localhost:3306/test --username root --password root -m 1 --table user5 --export-dir /sqoop/user5 //两张表的列的个数和类型必须相同
使用Sqoop测试与数据库的联通性
sqoop list-databases --connect jdbc:mysql://localhost:3308/ --username guesttest --password guesttest
注意:在使用sqoop的时候用jdbc连接数据库的时候尽量不要使用localhost或127.0.0.1,应该用主机的IP,为什么呢?因为在使用sqoop底层是会调用mapreduce去做数据的迁移,采用localhost时,resourcemanager把task分到每个worker的时候,他们的jdbc也是连接localhost或127.0.0.1,是无法与远程的数据通信的,这时候跑mapreduce就会报错。
最新文章
- mongoose - 让node.js高效操作mongodb
- 剑指Offer:面试题27——二叉搜索树与双向链表(java实现)
- 老生常谈JavaScript闭包
- LALR(1)语法分析生成器--xbytes
- Yii2 验证码不显示
- JFrame背景
- springMVC+MyBatis+Spring 整合(4) ---解决Spring MVC 对AOP不起作用的问题
- 使用eclipse开发webService很简单
- 解决Visual Studio 找不到报表控件、rdlc中文乱码
- anroid里面的post请求
- reg 正则
- Leetcode 10. 正则表达式匹配 - 题解
- Hibernate-day02
- js获取元素位置和style的兼容性写法
- .NET Core开发日志——Entity Framework与PostgreSQL
- 2018跳槽面试必备之深入理解 Java 多线程核心知识
- 20155321 2016-2017-2《Java程序设计》课堂实践项目
- python+mitmproxy抓包过滤+redis消息订阅+websocket实时消息发送,日志实时输出到web界面
- VMware VIC
- hibernate映射排序
热门文章
- C# 读取Excel中的数据
- 阿里云服务器教程–SSH 登录时出现如下错误:Host key verification failed
- Mybatis无法扫描到mapper.xml文件
- 如何在DOS窗口中显示UTF-8字符
- Spring学习十五----------Spring AOP API的Pointcut、advice及 ProxyFactoryBean相关内容
- JavaScript 作用域链图具体解释
- Android 属性动画框架 ObjectAnimator、ValueAnimator ,这一篇就够了
- 利用xlrd模块实现Python读取Excel文档
- maven项目The superclass ";javax.servlet.http.HttpServlet"; was not found on the Java Build Path
- PowerBuilder -- Tab控件