sqoop 安装和简单使用
来源:互联网 发布:软件登记机构 编辑:程序博客网 时间:2024/05/29 13:24
和flume相似,要将sqoop放在active的namenode节点上
下载sqoop-1.4.5-cdh5.3.6.tar.gz,解压到/opt/modules目录下
tar -zxf sqoop-1.4.5-cdh5.3.6.tar.gz -C /opt/modules/
添加环境变量
vim /etc/profile
##SQOOP_HOME
export SQOOP_HOME=/opt/modules/sqoop-1.4.5-cdh5.3.6
export PATH=$PATH:$SQOOP_HOME/bin
保存之后更新
source /etc/profile
修改配置文件
在$SQOOP_HOME/conf 目录下
mv sqoop-env-template.sh sqoop-env.sh
修改sqoop-env.sh如下:
export HADOOP_COMMON_HOME=/opt/modules/hadoop-2.5.0-cdh5.3.6
export HADOOP_MAPRED_HOME=/opt/modules/hadoop-2.5.0-cdh5.3.6
将Sqoop连接数据库的jar包(mysql-connector-java-5.1.31.jar),放在$SQOOP_HOME的lib目录下
验证Sqoop
sqoop-version
预期的输出:
17/09/20 17:08:32 INFO sqoop.Sqoop: Running Sqoop version: 1.4.5-cdh5.3.6
Sqoop 1.4.5-cdh5.3.6
git commit id
Compiled by jenkins on Tue Jul 28 15:08:32 PDT 2015
到这里,整个Sqoop安装工作完成。
2》sqoop导入数据
--m 代表一个map --where代表导入的过滤条件
bin/sqoop import \
--connect jdbc:mysql://VTU-01/test \
--username root \
--password sunstar \
--m 1 \
--table emp \
--where "" \
--fields-terminated-by '\t' \
--target-dir /user/hive/sqoop/emp2
创建Hive外部表
CREATE external TABLE IF NOT EXISTS employee04 (
id int,
name String,
deg String,
salary String)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
location '/user/hive/sqoop/emp/';
导入所有表
sqoop import-all-tables \
--connect jdbc:mysql://localhost/userdb \
--username root \
--password passwd
sqoop ,hive ,mysql之间的关系
mysql--》sqoop--》hive
3 举例》
1.在mysql创建一个表emp,里面有四个字段
id int,name String,deg String,salary String,在里面添加一些数据
2.sqoop将mysql的数据导入到hdfs文件系统上指定目录下
bin/sqoop import \
--connect jdbc:mysql://VTU-01/test \
--username root \
--password sunstar \
--m 1 \
--table emp \
--target-dir /user/hive/sqoop/emp
3.创建外部表 指定目录和sqoop导入的目录一样,这样hive就不需要自己导入,文件就会加载到表中,
创建外部表在于删除表不会删除hdfs文件系统上的文件
CREATE external TABLE IF NOT EXISTS employee04 (
id int,
name String,
deg String,
salary String)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE
location '/user/hive/sqoop/emp/';
4.select *from emplyeeo4; 数据已经可以查到
5.drop table employee04;查看hdfs文件系统上文件 还存在
bin/hdfs dfs -ls /user/hive/sqoop/emp
4》sqoop导数据到hive会先将数据导入到HDFS上,然后再将数据move到hive中
CREATE TABLE IF NOT EXISTS employee04 (
id int,
name String,
deg String,
salary String)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
location '/user/hive/emp4';
bin/sqoop import \
--connect jdbc:mysql://VTU-01/test \
--username root \
--password sunstar \
--m 1 \
--table emp \
--fields-terminated-by '\t' \
--hive-import \
--hive-database default \
--hive-table employee04 \
--as-textfile \
--hive-overwrite \
--target-dir /user/hive/emp4 \
--delete-target-dir
我的想法是为什么不可以将mysql的数据直接加载到创建的Hive表的路径,如上,这样子的话会报错,说不可以
移动同一路径下的文件到相同的目录
Failed with exception Unable to move source hdfs://localhost:8020/user/hive/emp4/part-m-00000 to
destination hdfs://localhost:8020/user/hive/emp4/part-m-00000
不出错的方式
bin/sqoop import \
--connect jdbc:mysql://VTU-01/test \
--username root \
--password sunstar \
--m 1 \
--table emp \
--fields-terminated-by '\t' \
--hive-import \
--hive-database default \
--hive-table employee04 \
--as-textfile \
--hive-overwrite \
--target-dir /user/hive/emp_tmp \
--delete-target-dir
我想让加载mysql的目标路径和创建Hive表的路径相同是因为,mysql表加再到某一路径下,再move到Hive表的
路径后,会在目录/user/hive/emp_tmp下残留一些目录和文件信息
5》从hive导出到mysql
bin/sqoop export \
--connect jdbc:mysql://VTU-01:3306/test \
--username root \
--password sunstar \
--m 1 \
--table emp2 \
--export-dir /user/hive/emp4/part-m-00000_copy_1 \
--input-fields-terminated-by "\t"
*********************
--export-dir: 从hdfs上哪个目录导出
--input-fields-terminated-by "\t" 要导出的文件字段是以什么进行分隔的
6》编写脚本文件运行 参数 --options-file
作用是使用文件编辑sqoop的参数和命令,然后使用--options-file参数来执行。
# vi job1.opt
export
--connect
jdbc:mysql://VTU-01:3306/test
--username
root
--password
sunstar
--table
emp
--num-mappers
1
--export-dir
/user/hive/emp4/part-m-00000_copy_1
--input-fields-terminated-by
"\t"
执行语句:
./sqoop --options-file job1.opt
7》sqoop Eval工具
选择查询评估计算
bin/sqoop eval \
--connect jdbc:mysql://VTU-01:3306/test \
--username root \
--password sunstar \
--query "SELECT * FROM emp LIMIT 3"
插入查询计算
sqoop eval \
--connect jdbc:mysql://VTU-01:3306/test \
--username root \
--password sunstar \
-e "INSERT INTO emp VALUES(1207,'huanggai','user',15000)"
- sqoop 安装和简单使用
- sqoop安装和使用
- Sqoop安装和使用
- sqoop的安装和使用
- sqoop的安装和使用
- sqoop的安装和使用
- sqoop的安装与简单使用
- Sqoop 1.99.3安装和使用
- 【hadoop sqoop】sqoop1的安装和使用
- sqoop简单使用
- Sqoop的简单使用
- sqoop简单使用
- sqoop简单import使用
- sqoop简单import使用
- sqoop 安装及使用
- sqoop的安装使用
- sqoop安装与使用
- sqoop安装,使用流程
- iOS特效之你家玻璃碎了
- iPhone 8背部logo集成指纹识别:这个逼装的好
- iOS 移动端生成工具开发
- 想当苹果工程师?水平不够招聘页面都看不到
- ARkit & coreML 科技与人类的第三类接触
- sqoop 安装和简单使用
- quartz和spring整合
- 实习
- 长按UIWebView上的图片保存到相册
- 为何放弃MVC使用MVVM
- Hadoop KMS 使用
- 苹果投10亿做原创节目 节目类型是关键
- 我们是谁?我们是程序猿!
- iOS播放器横竖屏切换的实现