首页 技术 正文
技术 2022年11月7日
0 收藏 466 点赞 575 浏览 2136 个字

简介

SQOOP是用于对数据进行导入导出的。

(1)把MySQL、Oracle等数据库中的数据导入到HDFS、Hive、HBase中

(2)把HDFS、Hive、HBase中的数据导出到MySQL、Oracle等数据库中

安装sqoop

1.解压sqoop

tar  -zxvf  sqoop-1.4.3.bin_hadoop-1.0.0.tar.gz

2.重命名

mv  sqoop-1.4.3.bin_hadoop-1.0.0   sqoop

3.设置环境变量

vi  /etc/profileexport SQOOP_HOME=/usr/local/sqoop

将$SQOOP_HOME/bin 添加到 PATH 中

source  /etc/profile

完毕!

把mysql数据导入到hdfs或者hive中

我们主要使用的是sqoop脚本。

注:因为要连接mysql 所以需要jdbc驱动

把数据从mysql导入到hdfs(默认是/user/username)中:

sqoop import  --connect jdbc:mysql://hadoop:3306/hive  --username root --password admin --table TBLS --fields-terminated-by '\t'
--null-string  ‘**’ 

表示对于null值使用**代替 默认使用NULL ‘- -’不能使用,专有字符

Sqoop在导入时,使用4个MapReduce并行执行 ,可以指定一个如下:

sqoop import --connect jdbc:mysql://hadoop:3306/hive  --username root --password admin --table TBLS --fields-terminated-by '\t'  -m 1

hdfs不可以多次写入,解决办法:

sqoop import --connect jdbc:mysql://hadoop:3306/hive  --username root --password admin --table TBLS --fields-terminated-by '\t'  -m 1  --append

也可以导入到hive中,但前提是删除 /user/root/目录下内容:

hadoop fs -rmr  /user/root/*

因为在执行导入后,会再次在/user/root下生成 sqoop文件

sqoop import --connect jdbc:mysql://hadoop:3306/hive --username root --password admin --table TBLS --fields-terminated-by '\t' -m 1 --append --hive-import

导入增量:

sqoop import --connect jdbc:mysql://hadoop:3306/hive --username root --password admin --table TBLS --fields-terminated-by '\t' -m 1 --append --hive-import --check-column  'TBL_ID'  --incremental append  --last-value 6

避免每次麻烦输出很长的命令,创建job:

sqoop job --create myjob -- import --connect jdbc:mysql://hadoop:3306/hive --username root --password admin --table TBLS --fields-terminated-by '\t' -m 1 --append --hive-import --check-column  'TBL_ID'  --incremental append  --last-value 6

列出创建的job:

sqoop job --list

执行创建的job:

sqoop job --exec myjob (会提示让你输出mysql密码)

为了保存mysql密码,让其自动运行,要修改sqoop的配置文件sqoop-site.xml,让下面的内容生效:

<property>    <name>sqoop.metastore.client.record.password</name>    <value>true</value>    <description>If true, allow saved passwords in the metastore.    </description>  </property>

修改后,下次执行之前,要先删除以前未修改配置文件的的myjob:

sqoop job --delete myjob

把数据从hdfs导出到mysql中

导数据得事先在mysql中存在表

导出数据必须按目录导出,不能按文件导出

导出数据

sqoop export --connect jdbc:mysql://hadoop:3306/hive --username root --password admin --table ids  --fields-terminated-by '\t'  --export-dir  '/ids'

导出可以重复进行,多次插入数据进入mysql中

注意:sqoop的导入导出事物是以Mapper任务为单位。

sqoop官网:http://sqoop.apache.org/

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,077
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,552
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,400
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,176
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,813
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,894