概述
目录
Sqoop部署
下载并解压
配置文件
添加驱动
验证安装
sqoop使用
连接MySQL
导入数据
RDBMS导入HDFS
RDBMS到Hive
RDBMS到Hbase
Sqoop部署
下载并解压
- 下载
- 上传安装包sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz到虚拟机中
- 解压安装包:
# 解压 tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /usr/local/src/ # 重命名 cd /usr/local/src/ mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha/ sqoop
配置文件
- 复制 sqoop-env-template.sh 文件并重命名
# 进入 sqoop 的 conf 目录下 [root@master src]# cd sqoop/conf # 查看目录下的文件 [root@master conf]# ls oraoop-site-template.xml sqoop-env-template.sh sqoop-site.xml sqoop-env-template.cmd sqoop-site-template.xml # 拷贝一个文件并命名为 sqoop-env.sh [root@master conf]# cp sqoop-env-template.sh sqoop-env.sh
- 配置sqoop-env.sh
# 根据软件的安装路径配置文件(如果没有安装对应组件会出现警告,不影响使用) export HADOOP_COMMON_HOME=/usr/local/src/hadoop export HADOOP_MAPRED_HOME=/usr/local/src/hadoop export HIVE_HOME=/usr/local/src/hive export HBASE_HOME=/usr/local/src/hbase export ZOOKEEPER_HOME=/usr/local/src/zookeeper export ZOOCFGDIR=/usr/local/src/zookeeper
添加驱动
如果连接类似MySQL等关系型数据库,需要添加JDBC驱动
点击下载:JDBC驱动
cp mysql-connector-java-5.1.27-bin.jar /usr/local/src/sqoop/lib/
验证安装
# 切换到 sqoop 目录下
cd /usr/local/src/sqoop
# 执行验证命令
bin/sqoop help
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
Sqoop操作
连接MySQL
bin/sqoop list-databases --connect jdbc:mysql://127.0.0.1:3306/ --username 用户 --password 密码
information_schema
hive
metastore
mysql
performance_schema
sys
导入数据
导入:从非大数据集群(RDBMS)向大数据集群(HDFS、HIVE、HBASE )传输数据
RDBMS导入HDFS
启动HDFS
-
进入MySQL
mysql -uroot -proot
-
创建测试数据
# 创建数据库 create database tescdata; # 进入 tescdata 数据库 use tescdata; # 创建表 CREATE TABLE PIM( id INT(4) PRIMARY KEY NOT NULL AUTO_INCREMENT, NAME VARCHAR(255), sex VARCHAR(255)); # 插入数据 INSERT INTO PIM(NAME, sex) VALUES('zhangshan', '1'); INSERT INTO PIM(NAME, sex) VALUES('lilei', '1'); INSERT INTO PIM(NAME, sex) VALUES('xiaohong', '0'); # 查看数据 mysql> select * from PIM; +----+-----------+------+ | id | NAME | sex | +----+-----------+------+ | 1 | zhangshan | 1 | | 2 | lilei | 1 | | 3 | xiaohong | 0 | +----+-----------+------+
-
导入数据
-
全部导入
bin/sqoop import --connect jdbc:mysql://localhost:3306/tescdata --username root --password root --table PIM --target-dir /user/tescdata --delete-target-dir --num-mappers 1 --fields-terminated-by "t"
[root@master sqoop]# hdfs dfs -cat /user/tescdata/part-m-00000 1 zhangshan 1 2 lilei 1 3 xiaohong 0
bin/sqoop import # 导入数据 --connect jdbc:mysql://localhost:3306/tescdata # 连接mysql --username root # 用户名 --password root # 密码 --table PIM # 表名 --target-dir /user/tescdata # hdfs目录 --delete-target-dir # 如果有就删除(不建议使用) --num-mappers 1 # 指定map数 --fields-terminated-by "t" # 指定文件分割符
-
查询导入
bin/sqoop import --connect jdbc:mysql://localhost:3306/tescdata --username root --password root --target-dir /user/tescdata --delete-target-dir --num-mappers 1 --fields-terminated-by "t" --query 'select * from PIM where sex = 1 and $CONDITIONS'
[root@master sqoop]# hdfs dfs -cat /user/tescdata/* 1 zhangshan 1 5 lilei 1
--query 查询(执行sql语句进行查询,and $CONDITIONS 不可省略
-
导入指定列
bin/sqoop import --connect jdbc:mysql://localhost:3306/tescdata --username root --password root --columns id,name --table PIM --target-dir /user/tescdata --delete-target-dir --num-mappers 1 --fields-terminated-by "t"
--columns 指定列名(使用查询导入执行 select id,name from PIM where $CONDITIONS; 效果一致)
- 导入筛选
bin/sqoop import --connect jdbc:mysql://localhost:3306/tescdata --username root --password root --target-dir /user/tescdata --delete-target-dir --num-mappers 1 --fields-terminated-by "t" --table PIM --where "id>2 and sex = 1"
--where 指定条件 (使用查询导入执行 select * from PIM where id>2 and sex = 1 and $CONDITIONS; 效果一致)
-
RDBMS到Hive
bin/sqoop import
--connect jdbc:mysql://localhost:3306/tescdata
--username root
--password root
--table PIM
--num-mappers 1
--hive-import
--fields-terminated-by "t"
--hive-overwrite
--hive-table hive_PIM
hive> show tables;
OK
hive_pim
Time taken: 0.09 seconds, Fetched: 1 row(s)
hive> select * from hive_pim;
OK
1 zhangshan 1
3 xiaohong 0
5 lilei 1
过程分为两步,第一步将数据导入到HDFS(默认的临时目录是/user/username/表名),第二步将导入到HDFS的数据迁移到Hive仓库
RDBMS到Hbase
bin/sqoop import
--connect jdbc:mysql://localhost:3306/tescdata
--username root
--password root
--table PIM
--columns "id,name,sex"
--column-family "info"
--hbase-create-table
--hbase-row-key "id"
--hbase-table "hbase_PIM"
--num-mappers 1
--split-by id
导出
导出:从大数据集群(HDFS、HIVE、HBASE )向非大数据集群(RDBMS)传输数据
HIVE/HDFS到RDBMS
bin/sqoop export
--connect jdbc:mysql://localhost:3306/tescdata
--username root
--password root
--table PIM
--num-mappers 1
--export-dir /user/hive/warehouse/hive_pim
--input-fields-terminated-by "t"
MySQL表必须存在,否则不会自动创建
最后
以上就是美好冷风为你收集整理的Sqoop部署与使用Sqoop部署Sqoop操作的全部内容,希望文章能够帮你解决Sqoop部署与使用Sqoop部署Sqoop操作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复