sqoop 把 hdfs 和关系型数据库 (mysql等)互导
简介
Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导入到Hadoop的HDFS中,也可以将HDFS的数据导入到关系型数据库中。
http://sqoop.apache.org/
导出导入的数据与字段的顺序进行匹配
从HDFS转换回mysql 的时候,自动增长的主键字段处,可以留空
环境
当调试过程出现IncompatibleClassChangeError一般都是版本兼容问题。
为了保证hadoop和sqoop版本的兼容性,使用Cloudera,
Cloudera简介:
Cloudera为了让Hadoop的配置标准化,可以帮助企业安装,配置,运行hadoop以达到大规模企业数据的处理和分析。
http://www.cloudera.com/content/cloudera-content/cloudera-docs/CDHTarballs/3.25.2013/CDH4-Downloadable-Tarballs/CDH4-Downloadable-Tarballs.html
下载安装hadoop-0.20.2-cdh3u6,sqoop-1.3.0-cdh3u6。
目的
将mysql数据转换为hadoop文件,从而可以使用map/reduce进行大数据的分析,然后再将分析结果转换回mysql,供业务查询调用。
安装
安装比较简单,直接解压即可
唯一需要做的就是将mysql的jdbc适配包mysql-connector-java-5.0.7-bin.jar copy到$SQOOP_HOME/lib下。
配置好环境变量:/etc/profile
export SQOOP_HOME=/home/hadoop/sqoop-1.3.0-cdh3u6/
export PATH=$SQOOP_HOME/bin:$PATH
MYSQL转HDFS-示例
./sqoop import --connect jdbc:mysql://10.8.210.166:3306/recsys --username root --password root --table shop -m 1 --target-dir /user/recsys/input/shop/$today |
输出数据: ./hadoop fs -cat /user/recsys/input/shop/2013-05-07/* 生成的hdfs数据 287,516809,0,0,6,25,45.78692,126.65384 288,523944,0,0,29,6,120.26087,30.17264 ------------------------------------------------------- |
HDFS转MYSQ-示例
./sqoop export --connect jdbc:mysql://10.8.210.166:3306/recsys --username root --password root --table shopassoc --fields-terminated-by ',' --export-dir /user/recsys/output/shop/$today |
输入数据: ./hadoop fs -cat /user/recsys/output/shop/2013-05-07/* Hdfs原始数据 null,857207,729974,947.0818,29,2013-05-08 10:22:29 null,857207,524022,1154.2603,29,2013-05-08 10:22:29 -------------------------------------------------------------------------- |
技巧
导出导入的数据与字段的顺序进行匹配
从HDFS转换回mysql 的时候,自动增长的主键字段处,可以留空
示例参数说明
参数类型 |
参数名 |
解释 |
公共 |
connect |
Jdbc-url |
公共 |
username |
--- |
公共 |
password |
--- |
公共 |
table |
表名 |
Import |
target-dir |
制定输出hdfs目录,默认输出到/user/$loginName/ |
export |
fields-terminated-by |
Hdfs文件中的字段分割符,默认是“\t” |
export |
export-dir |
hdfs文件的路径 |
导出大数据的拆分:
m |
使用多少个并行导入,默认是1,未开启,数据量大的话会自动根据主键ID进行拆分 |
split-by |
使用于没有主键的表的拆分,指定拆分的字段,拆分的原则是分布要广泛(自动拆分) |
Where |
同时可以手动执行多次,通过where条件进行手动拆分 |
参数 |
解释 |
Job |
定时作业, 个人觉得没啥意义,通常我更相信crontab |
eval |
执行sql,远程进行一些操作,但是经过测试发现不支持 delete |
create-hive-table |
复制某一个数据源的数据存储到hive |
sqoop 把 hdfs 和关系型数据库 (mysql等)互导相关推荐
- 用sqoop把hdfs数据存储到mysql报错,Job job_1566707990804_0002 failed with state FAILED due to: Tas k failed
用sqoop把hdfs数据存储到mysql数据库,报错 Job job_1566707990804_0002 failed with state FAILED due to: Tas k failed ...
- sqoop从HDFS导出数据到Mysql,卡在Running job: job_1571036741208_0010不动了,或者map 100% reduce 0%不动了
用sqoop从HDFS导出数据到mysql,一直卡在Running job: job_1571036741208_0010,应该是内存太小,导致速度太慢 在 yarn-site-xml中增加下面两个, ...
- 什么是腾讯云关系型数据库(MySQL/SQL Server/MariaDB/PostgreSQL详解)
什么是腾讯云关系型数据库?腾讯云关系型数据库提供 MySQL.SQL Server.MariaDB.PostgreSQL详细介绍.腾讯云关系型数据库让您在云中轻松部署.管理和扩展的关系型数据库,提供安 ...
- mysql事务四个特性_关系型数据库mysql事务四大特性
关系型数据库mysql 事务四大特性 一.首先我们先说一下什么是事务 在mysql中对数据进行增删改查中的任何一次操作的过程都可以被认为是一次事务,事务是一系列严密的操作,事务的结束有两种结果,当事务 ...
- Hadoop学习之路(五):Hadoop交互关系型数据库(MySQL)
内容简介 一.Hadoop与数据库交互简介 二.操作前的准备 1.创建表 2.将数据插入表words中 2.将MySQL的驱动分发到所有的Hadoop节点 三.Hadoop与MySQL交互实现 1.创 ...
- mysql关系数据库_关系型数据库MySql简介
什么是关系型数据库? 数据库就是用来存储数据的仓库,是一种特殊的文件. 根据存储的数据不同,划分为关系型数据库和非关系型数据库. 关系型数据库就是指 建立在关系模型基础上的数据库,通俗来讲这种数据库就 ...
- 《Python3 网络爬虫开发实战》:关系型数据库 MySQL 存储
关系型数据库是基于关系模型的数据库,而关系模型是通过二维表来保存的,所以它的存储方式就是行列组成的表,每一列是一个字段,每一行是一条记录.表可以看作某个实体的集合,而实体之间存在联系,这就需要表与表之 ...
- 使用D2RQ转换关系型数据库Mysql数据为RDF
目录 背景 1.安装D2RQ 1.1 简介 1.2 下载安装 1.3 配置mysql连接 2.转换为RDF 2.1 将mysql映射到mapping上 2.2 将Mysql数据转为RDF 背景 知识图 ...
- 关系型数据库Mysql
关系型数据库 基础知识: 数据库(DB):保存有组织的数据的容器. 数据库管理系统(DBMS):创建和操纵数据的容器. 数据库系统(DBS):DB+DBMS(含应用开发工具)+应用程序+数据库管理员( ...
最新文章
- java 日期检查_如何在Java中检查日期
- 摩根士丹利华鑫基金公司面试
- OpenGL创建多维数据集的多个实例
- docker安装flowable-ui
- goldengate使用ASM存放trail文件注意事项
- 格式怎么转换_爱奇艺下载的视频怎么转换成常见的mp4格式?
- zookeeper Error contacting service. It is probably not running
- macos 判断走无线网还是有线网_“第一次约会,就想发生关系”:怎样判断男人对你走心还是走肾?...
- enumerable java_ruby中的Enumerable的使用
- 问答式验证码源码贡献(待续.......)
- java 包含字符串 个数_java查找字符串中的包含子字符串的个数实现代码
- WooCommerce税收入门指南,第2部分
- 网页顶部广告展开与收起
- linux定时器使用指南及实例
- openCV 出现 0x770413C5 (ntdll.dll) 第一机会异常: 0xC0000005: 读取位置 0x00000008 时发生访问冲突 解决办法
- RFC6020 - YANG语言标准中文
- 流量贵如金,APP推广如何迈好第一步?技术和策略缺一不可
- Android 5.x浏览器webView或者qqX5崩溃,Resources$NotFoundException:String resource ID #0x2040003
- html边框是啥意思,css中border是什么意思
- imgui中在指定位置(非固定window方式)绘制text
热门文章
- 总线全称_一篇文章讲透I2C总线协议
- 编写python代码估算sin(x)的值
- [设计模式-行为型]迭代器模式(Iterator)
- JavaScript创建与读写本地文件(IEFirefox)
- Windows环境下smarty安装最简明教程 分享
- vue移动端点击事件延迟_去除点击事件300ms延迟 (使用了vue之后)
- 决策树ID3与C4.5
- c语言编写的键盘记录程序,C程序读取键盘码的方法
- 用java实现动态排序_关于Java动态分组排序的问题(Android中需要将数据排序给RecyclerView使用)...
- mysql utf8存不了中文乱码_MySQL怎么存文本不乱码?