1.软文推荐

2.软文推荐

3.软文推荐

sqoop它是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

sqoop-1.4.7安装配置流程 (1) Sqoop环境前提:
Hadoop
关系型数据库(MySQL/Oracle)
HBase
Hive
ZooKeeper
(2) 解压sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz安装包到目标目录下:
tar -zxvf .tar.gz -C 目标目录
(3) 为后续方便,重命名Sqoop文件夹:
mv sqoop-1.4.7.bin__hadoop-2.6.0/ sqoop-1.4.7
(4) 修改配置文件:

进入sqoop-1.4.7/conf路径,重命名配置文件:

mv sqoop-env-template.sh sqoop-env.sh

修改sqoop-env.sh信息:(若配置了环境变量,可通过

echo $XXXXX_HOME

查询安装位置)

vi sqoop-env.sh

#Set path to where bin/hadoop is available

export HADOOP_COMMON_HOME=Hadoop安装路径



#Set path to where hadoop-*-core.jar is available

#export HADOOP_MAPRED_HOME=Hadoop安装路径



#set the path to where bin/hbase is available

#export HBASE_HOME=HBase安装路径



#Set the path to where bin/hive is available

#export HIVE_HOME=Hive安装路径



#Set the path for where zookeper config dir is

#export ZOOCFGDIR=ZooKeeper 配置文件夹 路径

复制代码
(5) 关联Hive:
cp /XXX/hive/conf/hive-site.xml /XXX/sqoop-1.4.7/conf/
(5) 配置环境变量:

修改配置文件:

vi /etc/profile

增加以下内容:

export SQOOP_HOME=sqoop安装路径
export PATH=$PATH:$SQOOP_HOME/bin

声明环境变量:

source /etc/profile
(6) 启动查看版本号
sqoop version
(7) 添加驱动:
导入MySQL驱动到sqoop/lib下
导入Oracle驱动到sqoop/lib下
3. Sqoop操作 (1) 常用参数:

参数查看:Sqoop官网 -> documentation -> Sqoop User Guide

import 导入数据到集群

export 从集群导出数据

create-hive-table 创建hive表

import-all-tables 指定关系型数据库所有表到集群

list-databases 列出所有数据库

list-tables 列出所有数据库表

merge 合并数据

codegen 获取某张表数据生成JavaBean并打Jar包

(2) import——Sqoop的导入操作:

功能:MySQL/Oracle –> HDFS/Hive

修改MySQL访问权限:

update user set host='%' where host='localhost';
delete from user where Host='127.0.0.1';
delete from user where Host='bigdata01';
delete from user where Host='::1';
flush privileges;
use mysql;
select User, Host, Password from user;
查看权限:
修改权限为所有用户都可访问:

操作命令:

准备工作:
导入命令:
开启hive服务
在hive中创建好要导入的对应表
FAILED: SemanticException [Error 10072]: Database does not exist: XXXXXXXX
报错原因:Sqoop没有关联Hive
解决方法:
cp /XXX/hive/conf/hive-site.xml /XXX/sqoop-1.4.7/conf/
ERROR tool.ImportTool: Import failed: org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://bigdata01:9000/XXXXXXXXXX already exists
报错原因:hdfs中存在同名路径
解决方法:
指定新路径或者删除hdfs中原文件
ERROR tool.ImportTool: Import failed: java.io.IOException: java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf
报错原因:hive环境变量配置缺失
解决方法:——Hadoop环境加入Hive依赖
source /etc/profile
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HIVE_HOME/lib/*
vi /etc/profile
修改配置文件:
增加以下内容:
声明环境变量:
sqoop import --connect jdbc:mysql://bigdata01:3306/数据库名 --username root --password 密码 --table 表名 --num-mappers 1 --hive-import --fields-terminated-by " " --hive-overwrite --hive-table hive数据库名.表名
在Hive中可以看到指定表中已传入数据信息
可能报错1:
可能报错2:
可能报错3:
导出命令:
Linux本地查看hdfs上传结果:
使用query对数据进行过滤:
直接过滤字段:
sqoop import --connect jdbc:mysql://bigdata01:3306/数据库名 # 连接MySQL --username root # 用户名 --password XXXXXX # 密码 --table 表名 # 上传至HDFS的表 --target-dir /YYYYYYY # HDFS目标文件夹 --num-mappers 1 # 指定map运行 --fields-terminated-by " " # 指定分隔符
hdfs dfs -cat /XXXXXXX/part-m-00000
sqoop import --connect jdbc:mysql://bigdata01:3306/数据库名 --username root --password XXXXXX --table 表名 --target-dir /YYYYYYY --num-mappers 1 --fields-terminated-by " " --query 'select * from 表名 where 条件 and $CONDITIONS' # $CONDITIONS 对mapper进行索引
sqoop import --connect jdbc:mysql://bigdata01:3306/数据库名 --username root --password XXXXXX --table 表名 --target-dir /YYYYYYY --num-mappers 1 --columns 字段名
本地mysql表上传至hdfs:
本地mysql表上传至hive:
(3) emport——Sqoop的导出操作:

功能:HDFS/Hive –> MySQL/Oracle

操作命令:

导出命令:
sqoop emport --connect jdbc:mysql://bigdata01:3306/数据库名 # 连接MySQL --username root # 用户名 --password XXXXXX # 密码 --table 表名 # 目标mysql表 --export-dir /user/hive/warehouse/YYYYYYY # hive文件夹 --num-mappers 1 # 指定map运行 --input-fields-terminated-by " " # 指定分隔符
hive表导出至本地mysql:
(4) 列出所有数据库:

操作命令:

sqoop list-databases --connect jdbc:mysql://bigdata01:3306/ --username root --password 密码
(5) 获取数据库表数据生成JavaBean:

操作命令:

sqoop codegen --connect jdbc:mysql://bigdata01:3306/数据库名 --username root --password 密码 --table 表名 -- bindir Linux本地路径 # 指定Jar包打包路径 --class-name 类名 # 指定Java类名 --fields-terminated-by " "
(6) 合并hdfs中不同目录下的数据:

操作命令:

sqoop merge --new-data hdfs新表路径 --onto hdfs旧表路径 --target-dir /YYYYYYY # 合并后的hdfs路径 --jar-file = # Linux本地Jar包路径 --class-name XXXXX # Jar包的类 --merge-key id # 合并依据

**注意:**merge操作是一个新表替代旧表的操作,如果有冲突id的话新表数据替换旧表数据,如果没有冲突则是新表数据添加到旧表的数据。

本文来源:www.lxlinux.net/6663.html,若引用不当,请联系修改。

相关文章 8

1

GNOME为什么是Linux最好桌面环境 2分钟前

GNOME(The GNU Network Object Model Evironment)是基于GPL的完全开放的软件,可以使用用户很容易地使用和配置计算机。GNOME是一个友好的环境桌面,...

2

Linux重启redis具体方法 4分钟前

Linux如何重启redis?在Linux系统中修改redis配置文件之后可能需要重启才能生效,下面为大家分享一下Linux重启redis具体方法。 linux 下redis启动...

3

app软件费用(下载app软件收费吗) 5分钟前

目录:1、一款app应用开发需要多少钱2、app开发费用一览表3、APP开发费用大约多少4、一个app的运营成本要多少啊5、我开发一款软件APP,需要...

4

spartanhost(spartanhost评测) 7分钟前

目录:1、adf.ly怎么用adf.ly怎么用 1、使用自定义域名 进入adf.ly后台,进入 工具 栏,左侧有 域名 选项。 先把自有域名做 cname 到 custom.adf....

5

Linux下使用查看二进制文件 7分钟前

hexdump是Linux下的一个二进制文件查看工具,它可以将二进制文件转换为ASCII、八进制、十进制、十六进制格式进行查看,下面为大家详细讲解...

6

python实现单向链表及单向链表的反转具体方法 9分钟前

本篇文章重点为大家分享一下python实现单向链表及单向链表的反转具体方法,有需要的小伙伴可以参考一下。 链表的定义 链表中的每个节点...

7

黄山网站优化电话(黄山做网站) 11分钟前

目录:1、黄山权重优化怎么选2、谁知道黄山IE修复的网址啊!!!!3、黄山做网站,百度推广在哪?4、黄山市古徽印象文化传媒有限公司...

8

Linux 爱好者该向闭源软件敞开怀抱了 13分钟前

微软和苹果都已经为开源产品得到接受奠定了基础,甚至苹果公司有开发了一个开源网页显示了它在2015年已经开放的所有产品;微软更是公...