Apache Sqoop 结构化、非结构化数据转换工具
简介:
Apache Sqoop 是一种用于 Apache Hadoop 与关系型数据库之间结构化、非结构化数据转换的工具。
一、安装 MySQL、导入测试数据
1、文档链接:http://www.cnblogs.com/wangxiaoqiangs/p/5336048.html
2、导入测试数据
mysql > create database tmpdb;
mysql > use tmpdb;
mysql > system ls
tmp_recommend_hot.sql
mysql > source tmp_recommend_hot.sql
# 创建测试库,导入测试表
3、授权 hadoop
mysql > grant all on *.* to hadoop@'%' identified by 'hadoop';
mysql > flush privileges;
二、安装 Sqoop
1、下载、解压、设置环境变量
shell > cd /usr/local/src
shell > wget http://apache.fayea.com/sqoop/1.4.6/sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
shell > tar zxf sqoop-1.4..bin__hadoop-2.0.-alpha.tar.gz -C ../
shell > cd /usr/local/sqoop-1.4..bin__hadoop-2.0.-alpha
shell > vim /etc/profile
export PATH=$PATH:/usr/local/mysql/bin:/usr/local/hadoop-2.8./bin:/usr/local/apache-hive-2.1.-bin/bin:/usr/local/sqoop-1.4..bin__hadoop-2.0.-alpha/bin
shell > source /etc/profile
2、修改 sqoop-env.sh
shell > cp conf/sqoop-env-template.sh conf/sqoop-env.sh
shell > vim conf/sqoop-env.sh
# 指定安装目录
export HADOOP_COMMON_HOME=/usr/local/hadoop-2.8.
export HADOOP_MAPRED_HOME=/usr/local/hadoop-2.8.
3、复制 MySQL 连接器
shell > cp /usr/local/src/mysql-connector-java-5.1./mysql-connector-java-5.1.-bin.jar lib/
4、测试
shell > sqoop list-databases --connect jdbc:mysql://master.hadoop:3306 \
> --username hadoop --password hadoop information_schema
hive_meta
mysql
performance_schema
test
tmpdb
# 连接成功
三、MySQL To HDFS To Hive
1、创建数据存放目录
hadoop shell > hdfs dfs -mkdir /user/root
hadoop shell > hdfs dfs -chown root /user/root
2、将数据导入 HDFS
shell > sqoop import --connect jdbc:mysql://master.hadoop:3306/tmpdb \
> --username hadoop --password hadoop \
> --table tmp_recommend_hot --warehouse-dir=/user/root hadoop shell > hdfs dfs -ls /user/root
Found items
drwxr-xr-x - root supergroup -- : /user/root/tmp_recommend_hot hadoop shell > hdfs dfs -ls /user/root/tmp_recommend_hot
Found items
-rw-r--r-- root supergroup -- : /user/root/tmp_recommend_hot/_SUCCESS
-rw-r--r-- root supergroup -- : /user/root/tmp_recommend_hot/part-m-
-rw-r--r-- root supergroup -- : /user/root/tmp_recommend_hot/part-m-
-rw-r--r-- root supergroup -- : /user/root/tmp_recommend_hot/part-m-
-rw-r--r-- root supergroup -- : /user/root/tmp_recommend_hot/part-m-
# 默认情况下启用 4 个 MR 进程,所以有 4 个文件
3、将数据从 HDFS 导入 Hive
shell > beeline -u jdbc:hive2://master.hadoop:10000 -n hadoop : jdbc:hive2://master.hadoop:10000> create database tmpdb;
: jdbc:hive2://master.hadoop:10000> use tmpdb;
: jdbc:hive2://master.hadoop:10000> dfs -cat /user/root/tmp_recommend_hot/*;
+--------------------------------------------------------------------------------------------------------------------------------+--+
| ,,资讯,,《人民的名义》热播原著小说杭州卖断货,http://pic2.qiyipic.com/image/20170410/0f/2a/v_112112674_m_601.jpg,934,null |
| ,,资讯,,临汾旅游景区体制机制改革再出招,http://pic6.qiyipic.com/image/20170410/a5/bb/v_112112690_m_601.jpg,420,null |
| ,,电影,,魔兽,http://imgbftv.b0.upaiyun.com/upload/origin/8/147598326883101.jpg,326,null |
| ,,综艺,,奇葩说第4季,http://imgbftv.b0.upaiyun.com/upload/origin/2/149176084218704.jpg,579,null |
| ,,电视剧,,神雕侠侣,http://imgbftv.b0.upaiyun.com/upload/origin/6/143945924668370.jpg,260,null |
| ,,电影,,金刚2005,http://imgbftv.b0.upaiyun.com/upload/origin/3/148497964349088.jpg,2563,null |
| ,,资讯,,追踪:夜半横躺马路中央男子遭碾压致死,http://pic6.qiyipic.com/image/20170411/3e/66/v_112119228_m_601.jpg,806,null |
| ,,综艺,,天生是优我,http://imgbftv.b0.upaiyun.com/upload/origin/1/149182951136923.jpg,1094,null
# 查看了一下原始数据,是以 , 为分隔符的文本
: jdbc:hive2://master.hadoop:10000> create external table hot_film
. . . . . . . . . . . . . . . . . .> (id int, vid int, type string, year int, name string, image string, views int, dtime int)
. . . . . . . . . . . . . . . . . .> row format delimited fields terminated by ','
. . . . . . . . . . . . . . . . . .> location 'hdfs:///user/root/tmp_recommend_hot';
# 创建了一个外部表,/user/hive/warehouse/tmpdb.db 下并没有数据,数据还存在原始位置 /user/root/tmp_recommend_hot 下
: jdbc:hive2://master.hadoop:10000> select id, vid, name, views from hot_film limit 3;
+-----+----------+-----------+--------+--+
| id | vid | name | views |
+-----+----------+-----------+--------+--+
| | | 三生三世十里桃花 | |
| | | 情圣 | |
| | | 因为遇见你 | |
+-----+----------+-----------+--------+--+
# 数据没问题,经 count(id) 对比,数据也没少!
四、MySQL To Hive
1、创建 Hive 数据库
shell > beeline -u jdbc:hive2://master.hadoop:10000 -n hadoop : jdbc:hive2://master.hadoop:10000> create database tmpdb2;
2、导入数据
shell > sqoop import --connect jdbc:mysql://master.hadoop:3306/tmpdb \
> --username hadoop --password hadoop \
> --fields-terminated-by '\t' --table tmp_recommend_hot \
> --hive-import --hive-database tmpdb2 --hive-table hot_film
# import、import-all-tables 导入表、导入所有表
# --fields-terminated-by 指定分隔符
# --table 指定导入的表
# --hive-import 导入 hive 表
# --hive-database 指定导入到 hive 哪个数据库中
# --hive-table 指定导入后的表名,不指定时保持原表名
# --hive-overwrite 覆盖写入
# -m 指定启动几个 map/reduce 程序,表中没有主键时,需要指定 -m 1
3、验证数据
: jdbc:hive2://master.hadoop:10000> use tmpdb2;
: jdbc:hive2://master.hadoop:10000> show tables;
+-----------+--+
| tab_name |
+-----------+--+
| hot_film |
+-----------+--+
: jdbc:hive2://master.hadoop:10000> select id, vid, name, views from hot_film limit 3;
+-----+----------+-----------+--------+--+
| id | vid | name | views |
+-----+----------+-----------+--------+--+
| | | 三生三世十里桃花 | |
| | | 情圣 | |
| | | 因为遇见你 | |
+-----+----------+-----------+--------+--+
# 一切正常,这样导入的是内部表,数据会被移动到 hive 配置文件中指定的路径。默认 /user/hive/warehouse
报错管理:
1、数据文件已存在
// :: ERROR tool.ImportTool: Encountered IOException running import job: org.apache.hadoop.mapred.FileAlreadyExistsException:
Output directory hdfs://master.hadoop:8020/user/root/tmp_recommend_hot already exists
# 与上一个实验导入的数据冲突,从 hdfs 删除即可,当然上个实验的数据库表中就没有数据了
2、权限不足
// :: INFO hive.HiveImport: FAILED: Execution Error, return code from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:Got exception: org.apache.hadoop.security.AccessControlException Permission denied: user=root, access=WRITE, inode="/user/hive/warehouse/tmpdb2.db":hadoop:supergroup:drwxrwxr-x
# 开放 /user/hive 目录权限,hdfs dfs -chmod -R 777 /user/hive
Apache Sqoop 结构化、非结构化数据转换工具的更多相关文章
- p2p gossip 结构化 非结构化
p2p P2P中文名字叫对等网络,网络中节点地位一致. QQ其实不算P2P,因为QQ利用了中央服务器. Hbase这样的分布式系统,因为有Hmaster节点,也不算是P2P网络: cas ...
- MySQL 5.7:非结构化数据存储的新选择
本文转载自:http://www.innomysql.net/article/23959.html (只作转载, 不代表本站和博主同意文中观点或证实文中信息) 工作10余年,没有一个版本能像MySQL ...
- Python爬虫(九)_非结构化数据与结构化数据
爬虫的一个重要步骤就是页面解析与数据提取.更多内容请参考:Python学习指南 页面解析与数据提取 实际上爬虫一共就四个主要步骤: 定(要知道你准备在哪个范围或者网站去搜索) 爬(将所有的网站的内容全 ...
- hbase非结构化数据库与结构化数据库比较
目的:了解hbase与支持海量数据查询的特性以及实现方式 传统关系型数据库特点及局限 传统数据库事务性特别强,要求数据完整性及安全性,造成系统可用性以及伸缩性大打折扣.对于高并发的访问量,数据库性能不 ...
- 结构化数据(structured),半结构化数据(semi-structured),非结构化数据(unstructured)
概念 结构化数据:即行数据,存储在数据库里,可以用二维表结构来逻辑表达实现的数据. 半结构化数据:介于完全结构化数据(如关系型数据库.面向对象数据库中的数据)和完全无结构的数据(如声音.图像文件等)之 ...
- 结构化数据、半结构化数据、非结构化数据——Hadoop处理非结构化数据
刚开始接触Hadoop ,指南中说Hadoop处理非结构化数据,学习数据库的时候,老师总提结构化数据,就是一张二维表,那非结构化数据是什么呢?难道是文本那样的文件?经过上网搜索,感觉这个帖子不错 网址 ...
- Spark如何与深度学习框架协作,处理非结构化数据
随着大数据和AI业务的不断融合,大数据分析和处理过程中,通过深度学习技术对非结构化数据(如图片.音频.文本)进行大数据处理的业务场景越来越多.本文会介绍Spark如何与深度学习框架进行协同工作,在大数 ...
- .使用 HTML+CSS 实现如图布局,border-widht 5px,一个格子大小是 50*50,hover时候边框变为红色(兼容IE6+,考虑语义化的结构)
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
- Axure RP Pro7.0的key注册码加汉化非破解
上次我们刚分享过Axure RP Pro6.5 key注册码加汉化非破解,我还要分享一个Axure RP Pro7.0的key注册码加汉化,非破解哦. 当然方法还是不变,先用下面的密钥激活.用户名就是 ...
随机推荐
- 伸展树的基本操作——以【NOI2004】郁闷的出纳员为例
前两天老师讲了伸展树……虽然一个月以前自己就一直在看平衡树这一部分的书籍,也仔细地研读过伸展树地操作代码,但是就是没写过程序……(大概也是在平衡树的复杂操作和长代码面前望而生畏了)但是今天借着老师布置 ...
- JQuery中绑定事件(bind())和移除事件(unbind())
有时候事件执行完了,想取消事件的效果可以通过一定的办法来处理.比如bind()(绑定事件)和unbind()(移除通过bind()方法添加的事件)方法来移除事件的效果. 比如下面的一个案例: 复制代码 ...
- [leetcode] 101. Symmetric Tree 对称树
题目大意 #!/usr/bin/env python # coding=utf-8 # Date: 2018-08-30 """ https://leetcode.com ...
- Winform开发之SqlCommand常用属性和方法
SqlCommand类表示要对 SQL Server 数据库执行的一个 Transact-SQL 语句或存储过程,有若干个属性和若干个方法,具体的各类方法使用可以从msdn上找到. 这里介绍几个常用东 ...
- 基于spec评论——王者荣耀交流协会的PSP DAILY作品
一.运行环境 win10系统. Visual Studio 2017 二.运行程序及截图 1.进入界面如下图. 2.手动输入 类别 任务 点击开始,自动记录时间.如下图. 3.点击结束按钮,会有提示窗 ...
- Ubuntu tar方式安装mysql5.7.21 时报错 [ERROR] Can't locate the language directory. 以及 ------ libaio.so.1: cannot open shared object file
参考帖子: http://blog.csdn.net/ty0415/article/details/22958133 首先,在 MySQL 官方网站上下载安装包, 如图: 然后,执行安装命令 bin/ ...
- C语言--第三次作业
要求一 . 1)C高级第三次PTA作业(1) 题目6-1 1.设计思路 (1)主要描述题目算法 第一步:将月份分别赋值: 第二步:利用switch语句,输 ...
- Linux的发行版之间的联系和区别
转载:https://blog.csdn.net/suixin788/article/details/52555558 联系 Linux的内核源代码和Linux的应用程序都可以自由获得,因此很多公司组 ...
- hadoop之 hadoop日志存放路径
环境:[root@hadp-master hadoop-2.7.4]# hadoop versionHadoop 2.7.4 Hadoop的日志大致可以分为两类: (1).Hadoop系统服务输出的日 ...
- Spring Cloud 入门 之 Eureka 篇(一)
原文地址:Spring Cloud 入门 之 Eureka 篇(一) 博客地址:http://www.extlight.com 一.前言 Spring Cloud 是一系列框架的有序集合.它利用 Sp ...