简介:

Apache Sqoop 是一种用于 Apache Hadoop 与关系型数据库之间结构化、非结构化数据转换的工具。

一、安装 MySQL、导入测试数据

2、导入测试数据

mysql > create databasetmpdb;

mysql> usetmpdb;

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.6.bin__hadoop-2.0.4-alpha.tar.gz -C ../shell> cd /usr/local/sqoop-1.4.6.bin__hadoop-2.0.4-alpha

shell> vim /etc/profile

export PATH=$PATH:/usr/local/mysql/bin:/usr/local/hadoop-2.8.0/bin:/usr/local/apache-hive-2.1.1-bin/bin:/usr/local/sqoop-1.4.6.bin__hadoop-2.0.4-alpha/bin

shell> source /etc/profile

2、修改 sqoop-env.sh

shell > cp conf/sqoop-env-template.sh conf/sqoop-env.shshell> vim conf/sqoop-env.sh# 指定安装目录

export HADOOP_COMMON_HOME=/usr/local/hadoop-2.8.0export HADOOP_MAPRED_HOME=/usr/local/hadoop-2.8.0

3、复制 MySQL 连接器

shell > cp /usr/local/src/mysql-connector-java-5.1.41/mysql-connector-java-5.1.41-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

Found1items

drwxr-xr-x - root supergroup 0 2017-05-26 18:47 /user/root/tmp_recommend_hot

hadoop shell> hdfs dfs -ls /user/root/tmp_recommend_hot

Found5items-rw-r--r-- 3 root supergroup 0 2017-05-26 18:47 /user/root/tmp_recommend_hot/_SUCCESS-rw-r--r-- 3 root supergroup 17426 2017-05-26 18:47 /user/root/tmp_recommend_hot/part-m-00000

-rw-r--r-- 3 root supergroup 18188 2017-05-26 18:47 /user/root/tmp_recommend_hot/part-m-00001

-rw-r--r-- 3 root supergroup 18719 2017-05-26 18:47 /user/root/tmp_recommend_hot/part-m-00002

-rw-r--r-- 3 root supergroup 18430 2017-05-26 18:47 /user/root/tmp_recommend_hot/part-m-00003

# 默认情况下启用 4 个 MR 进程,所以有 4 个文件

3、将数据从 HDFS 导入 Hive

shell > beeline -u jdbc:hive2://master.hadoop:10000 -n hadoop

0: jdbc:hive2://master.hadoop:10000> create database tmpdb;

0: jdbc:hive2://master.hadoop:10000> use tmpdb;

0: jdbc:hive2://master.hadoop:10000> dfs -cat /user/root/tmp_recommend_hot/*;

+--------------------------------------------------------------------------------------------------------------------------------+--+

| 401,1859110,资讯,2017,《人民的名义》热播原著小说杭州卖断货,http://pic2.qiyipic.com/image/20170410/0f/2a/v_112112674_m_601.jpg,934,null |

| 402,1859123,资讯,2017,临汾旅游景区体制机制改革再出招,http://pic6.qiyipic.com/image/20170410/a5/bb/v_112112690_m_601.jpg,420,null |

| 403,1291853,电影,2016,魔兽,http://imgbftv.b0.upaiyun.com/upload/origin/8/147598326883101.jpg,326,null |

| 404,1838847,综艺,2017,奇葩说第4季,http://imgbftv.b0.upaiyun.com/upload/origin/2/149176084218704.jpg,579,null |

| 405,14614,电视剧,2014,神雕侠侣,http://imgbftv.b0.upaiyun.com/upload/origin/6/143945924668370.jpg,260,null |

| 406,387443,电影,2005,金刚2005,http://imgbftv.b0.upaiyun.com/upload/origin/3/148497964349088.jpg,2563,null |

| 407,1861695,资讯,2017,追踪:夜半横躺马路中央男子遭碾压致死,http://pic6.qiyipic.com/image/20170411/3e/66/v_112119228_m_601.jpg,806,null |

| 408,1841442,综艺,2017,天生是优我,http://imgbftv.b0.upaiyun.com/upload/origin/1/149182951136923.jpg,1094,null

# 查看了一下原始数据,是以 , 为分隔符的文本

0: 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 下

0: jdbc:hive2://master.hadoop:10000> select id, vid, name, views from hot_film limit 3;

+-----+----------+-----------+--------+--+

| id | vid | name | views |

+-----+----------+-----------+--------+--+

| 1 | 1544131 | 三生三世十里桃花 | 1003 |

| 2 | 1774150 | 情圣 | 630 |

| 3 | 1774815 | 因为遇见你 | 548 |

+-----+----------+-----------+--------+--+

# 数据没问题,经 count(id) 对比,数据也没少!

四、MySQL To Hive

1、创建 Hive 数据库

shell > beeline -u jdbc:hive2://master.hadoop:10000 -n hadoop

0: 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、验证数据

0: jdbc:hive2://master.hadoop:10000> use tmpdb2;

0: jdbc:hive2://master.hadoop:10000> show tables;

+-----------+--+

| tab_name |

+-----------+--+

| hot_film |

+-----------+--+

0: jdbc:hive2://master.hadoop:10000> select id, vid, name, views from hot_film limit 3;

+-----+----------+-----------+--------+--+

| id | vid | name | views |

+-----+----------+-----------+--------+--+

| 1 | 1544131 | 三生三世十里桃花 | 1003 |

| 2 | 1774150 | 情圣 | 630 |

| 3 | 1774815 | 因为遇见你 | 548 |

+-----+----------+-----------+--------+--+

# 一切正常,这样导入的是内部表,数据会被移动到 hive 配置文件中指定的路径。默认 /user/hive/warehouse

报错管理:

1、数据文件已存在

17/05/27 14:34:15ERROR 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、权限不足

17/05/27 14:48:34 INFO hive.HiveImport: FAILED: Execution Error, return code 1 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

非结构化数据 mysql_Apache Sqoop 结构化、非结构化数据转换工具相关推荐

  1. 结构化数据、半结构数据和非结构数据的总结

    (一) (1)结构化数据(即行数据,存储在数据库里,可以用二维表结构来逻辑表达实现的数据) (2)非结构化数据,包括所有格式的办公文档.文本.图片.XML.HTML.各类报表.图像和音频/视频信息等等 ...

  2. 结构化数据(structured),半结构化数据(semi-structured),非结构化数据(unstructured)

    研究一下分布式架构的实现方式 结构化数据(structured),半结构化数据(semi-structured),非结构化数据(unstructured) 概念 结构化数据:即行数据,存储在数据库里, ...

  3. 结构化数据(structured),半结构化数据(semi-structured),非结构化数据(unstructured)...

    概念 结构化数据:即行数据,存储在数据库里,可以用二维表结构来逻辑表达实现的数据. 半结构化数据:介于完全结构化数据(如关系型数据库.面向对象数据库中的数据)和完全无结构的数据(如声音.图像文件等)之 ...

  4. 基于结构化数据的文本生成:非严格对齐生成任务及动态轻量的GCN生成模型

    作者|邴立东.程丽颖.付子豪.张琰等 单位|阿里巴巴达摩院.香港中文大学等 摘要 基于结构化数据生成文本(data-to-text)的任务旨在生成人类可读的文本来直观地描述给定的结构化数据.然而,目前 ...

  5. 结构化数据(structured),半结构化数据(semi-structured),非结构化数据(unstructured)的定义和区别

    相对于结构化数据(即行数据,存储在数据库里,可以用二维表结构来逻辑表达实现的数据)而言,不方便用数据库二维逻辑表来表现的数据即称为非结构化数据,包括所有格式的办公文档.文本.图片.XML.HTML.各 ...

  6. php 串行化数据,php中对象的串行化

    我们大家有知道PHP串行化可以把变量包括对象,转化成连续bytes数据,你可以将串行化后的变量存在一个文件里或在网络上传输,然后再反串行化还原为原来的数据.文章这里就PHP串行化为大家详细的介绍.你在 ...

  7. oracle如何导出表结构及数据,PLSQL怎样导出oracle表结构和数据

    1.导出表结构和数据 方式1.tools->export user objects是导出表结构 tools ->export user object 选择选项,导出.sql文件 说明:导出 ...

  8. 我被“非结构化数据包围了”,请求支援!

    阿里妹导读:非结构化数据的内容占据了当前数据海洋的80%.换句话来说,就是我们都被"非结构化数据"包围了.由于非结构化数据的信息量和信息的重要程度很难被界定,因此对非结构化数据的使 ...

  9. 结构化数据和非结构化数据的分析

    结构化数据和非结构化数据的分析 一. 什么是数据 二. 数据的分类 1. 按性质分为 2. 按表现形式分为 3. 按表现形式分为 三. 结构化数据和非结构化数据 1. 什么是结构化数据 2. 什么是非 ...

最新文章

  1. 三星android获取root权限,三星G9250(S6 Edge公开版全网通 Android 5.1)获取ROOT权限详解教程...
  2. 快速了解Kubernetes微服务中的通信
  3. oracle 某天 减一天,案例一:shell脚本指定日期减去一天
  4. Java中Comparable和Comparator的区别
  5. 16/100. Symmetric Tree
  6. android悬浮窗代码布局,三行代码实现Android应用内悬浮窗,无需一切权限,适配所有ROM和厂商...
  7. SQL Server 使用OPENROWSET访问ORACLE遇到的各种坑总结
  8. Halcon例程详解 (深度图转换为3D图像)—— xyz_attrib_to_object_model_3d
  9. IAR软件中直接查看编译后代码大小
  10. DealComment (注释处理工具)
  11. 4.16-4.22课题(拼团系统)进度汇报
  12. Atiitt uke兼wag集团2017年度成果报告总结 attilax著 1. 组织机构进一步完善 8大首席部门 1 2. 事业部进一步完善,以及一百多个事业部了 1 3. 企业文化进一步完善 1
  13. 脱壳_详细_使用的方法_03
  14. 解决 java.lang.RuntimeException: Method i in android.util.Log not mocked. See http://g.co/androidstudi
  15. 备份恢复Lesson 10. Restore and Recovery Concepts
  16. word或excel图片没有另存为怎么办
  17. 数据库连接数和数据库连接池的连接数区别?
  18. 求是追梦--------一位计算机专业硕士毕业生的求职经历和感想
  19. 请问机器学习算法岗中用户增长和推荐系统差别是什么呢?
  20. 终于找到阻止360文件粉碎机的源代码了

热门文章

  1. Kali Linux安装360免费wifi驱动。
  2. 精品水果店如何运营,水果店运营指南
  3. JavaScript计算文件Hash值(sha1 sha 256 md5)
  4. 程序开发中,\t \r \n \f 什么意思
  5. python发送qq邮件(加密非加密)
  6. 百度新闻android客户端,百度新闻进驻Android版客户端 全球最大移动中文新闻平台出炉...
  7. Appium - 入门指南(偏重于实际操作)
  8. MFC制作DLL(导出类和函数)
  9. window下安装git flow
  10. Excel学习笔记:P32-从此让写公式变得超级简单!