hadoop的安装配置这里就不讲了。

Sqoop的安装也很简单。

完成sqoop的安装后,可以这样测试是否可以连接到mysql(注意:mysql的jar包要放到 SQOOP_HOME/lib 下):

sqoop list-databases --connect jdbc:mysql://192.168.1.109:3306/ --username root --password 19891231

结果如下

即说明sqoop已经可以正常使用了。

下面,要将mysql中的数据导入到hadoop中。

我准备的是一个300万条数据的身份证数据表:

先启动hive(使用命令行:hive 即可启动)

然后使用sqoop导入数据到hive:

sqoop import --connect jdbc:mysql://192.168.1.109:3306/hadoop --username root --password 19891231 --table test_sfz --hive-import

sqoop 会启动job来完成导入工作。

完成导入用了2分20秒,还是不错的。

在hive中可以看到刚刚导入的数据表:

我们来一句sql测试一下数据:

select * from test_sfz where id < 10;

可以看到,hive完成这个任务用了将近25秒,确实是挺慢的(在mysql中几乎是不费时间),但是要考虑到hive是创建了job在hadoop中跑,时间当然多。

接下来,我们会对这些数据进行复杂查询的测试:

我机子的配置如下:

hadoop 是运行在虚拟机上的伪分布式,虚拟机OS是ubuntu12.04 64位,配置如下:

TEST 1 计算平均年龄

测试数据:300.8 W

1. 计算广东的平均年龄

mysql:select (sum(year(NOW()) - SUBSTRING(borth,1,4))/count(*)) as ageAvge from test_sfz where address like '广东%';

用时: 0.877s

hive:select (sum(year('2014-10-01') - SUBSTRING(borth,1,4))/count(*)) as ageAvge from test_sfz where address like '广东%';

用时:25.012s

2. 对每个城市的的平均年龄进行从高到低的排序

mysql:select address, (sum(year(NOW()) - SUBSTRING(borth,1,4))/count(*)) as ageAvge from test_sfz GROUP BY address order by ageAvge desc;

用时:2.949s

hive:select address, (sum(year('2014-10-01') - SUBSTRING(borth,1,4))/count(*)) as ageAvge from test_sfz GROUP BY address order by ageAvge desc;

用时:51.29s

可以看到,在耗时上面,hive的增长速度较mysql慢。

TEST 2

测试数据:1200W

mysql 引擎: MyISAM(为了加快查询速度)

导入到hive:

1. 计算广东的平均年龄

mysql:select (sum(year(NOW()) - SUBSTRING(borth,1,4))/count(*)) as ageAvge from test_sfz2 where address like '广东%';

用时: 5.642s

hive:select (sum(year('2014-10-01') - SUBSTRING(borth,1,4))/count(*)) as ageAvge from test_sfz2 where address like '广东%';

用时:168.259s

2. 对每个城市的的平均年龄进行从高到低的排序

mysql:select address, (sum(year(NOW()) - SUBSTRING(borth,1,4))/count(*)) as ageAvge from test_sfz2 GROUP BY address order by ageAvge desc;

用时:11.964s

hive:select address, (sum(year('2014-10-01') - SUBSTRING(borth,1,4))/count(*)) as ageAvge from test_sfz2 GROUP BY address order by ageAvge desc;

用时:311.714s

TEST 3

测试数据:2000W

mysql 引擎: MyISAM(为了加快查询速度)

导入到hive:

(这次用的时间很短!可能是因为TEST2中的导入时,我的主机在做其他耗资源的工作..)

1. 计算广东的平均年龄

mysql:select (sum(year(NOW()) - SUBSTRING(borth,1,4))/count(*)) as ageAvge from test_sfz2 where address like '广东%';

用时: 6.605s

hive:select (sum(year('2014-10-01') - SUBSTRING(borth,1,4))/count(*)) as ageAvge from test_sfz2 where address like '广东%';

用时:188.206s

2. 对每个城市的的平均年龄进行从高到低的排序

mysql:select address, (sum(year(NOW()) - SUBSTRING(borth,1,4))/count(*)) as ageAvge from test_sfz2 GROUP BY address order by ageAvge desc;

用时:19.926s

hive:select address, (sum(year('2014-10-01') - SUBSTRING(borth,1,4))/count(*)) as ageAvge from test_sfz2 GROUP BY address order by ageAvge desc;

用时:411.816s

sqoop mysql hadoop_使用sqoop将mysql数据导入到hadoop相关推荐

  1. mysql8导入 psc 没有数据_新特性解读 | MySQL 8.0.22 任意格式数据导入

    作者:杨涛涛 资深数据库专家,专研 MySQL 十余年.擅长 MySQL.PostgreSQL.MongoDB 等开源数据库相关的备份恢复.SQL 调优.监控运维.高可用架构设计等.目前任职于爱可生, ...

  2. php实现sql server数据导入到mysql数据库_php实现SQL Server数据导入Mysql数据库(示例)...

    php将mssql的数据导入到mysql数据库中,代码: 代码示例: //连接SQL server数据库 $conn=mssql_connect("localhost"," ...

  3. mysql文档批处理去重_数据导入经验总结

    一.导入mysql数据前期设置 1.建库和表统一编码设置为UTF8,根据数据中的编码来修改(也可以将数据全部转换为utf-8格式,小文件可用notepad来修改编码,大文件可用 LogViewPro ...

  4. mysql rrd_将RRD数据库中数据导入MYSQL中

    一.RRD数据库及RRDTOOL简介 意为Round Robin Database.设计理念为按照round-robin的方式进行存储,在一个周期之后(可自己定义),新的数据会覆盖掉原来的数据.所以R ...

  5. mysql从文本导入表_[Mysql] 用load data将文本文件数据导入到表

    MySQL的load data命令可以将文本文件的数据导入到表 有文本文件如下: E:\>more test.txt 1,XX,M 2,YY,F 在mysql里创建表t mysql> cr ...

  6. excel导入mysql命令行_将Excel数据导入MySql

    今天是全国数学建模比赛,同学选的一个题目需要对一个large的Excel表格进行统计,好哥们儿嘛--便帮助他完成了数据从Excel到MySql的转化.记下具体步骤分享给大家,也免得大家到网上到处乱找了 ...

  7. mysql 大文本_超大文本文件数据导入MYSQL

    今天用到一个处理650万的数据导入数据库处理的问题,在网上找了半天,终于在在三灯的博客找到办法,特此转过来以备后用,哈哈! 我执行的命令语句是mysqlimport -uroot -p123456 - ...

  8. mariadb转mysql_MariaDB/MySQL备份和恢复(二):数据导入、导出

    1.导出.导入数据 load data infile和select into outfile语句是配套的.select into outfile语句是将检索出来的数据按格式导出到文件中,数据迁移跨数据 ...

  9. linux下Mysql 的安装、配置、数据导入导出

    为什么80%的码农都做不了架构师?>>>    <p><span>MySQL</span><span>是一种</span> ...

最新文章

  1. 该如何继续走下去。。
  2. python tkinter entry默认值_Python Tkinter Entry和Text的添加与使用详解
  3. android6.0源码分析之Zygote进程分析
  4. codevs2574 波兰表达式
  5. Xshell的一些实用技巧
  6. Farseer.Net ORM开源框架 V0.x 教程目录
  7. JS 中的return false的作用
  8. Solr:创建拼写检查器
  9. 枚举数据类型 c# 114866833
  10. python第三方库——requests
  11. php 向py发起请求,Python向PHP发起GET与POST请求
  12. SCPPO(二十六):测算过程中问题的解决总结
  13. 公钥、私钥、数字证书的概念 (讲得很明吧,通俗易懂)
  14. 基于JSP实现学校社团管理系统
  15. html5dragw3c,HTML5拖拽功能drag
  16. Mortal Kombat Tower (dp动态规划)
  17. 创作者基金 11 月亮点
  18. C语言电子时钟程序设计,单片机C语言电子时钟加日历显示编程
  19. js拖拽俄罗斯方块小游戏(一)
  20. 火山PC_QQ登录源码(QQ互联)

热门文章

  1. 金蝶kis商贸采购单商品代码_金蝶KIS商贸版流程
  2. python中subprocess_Python中subprocess学习
  3. 数字开头的正则表达式_初学Web前端要注意什么 正则表达式是怎么回事
  4. 设置为true有什么区别_海绵与珍珠棉有什么区别?天南包装小编为您分析
  5. MongoDB 之 手把手教你增删改查 MongoDB - 2
  6. 第一章 编程基础知识
  7. 3-无重复字符的最长子串(中等)
  8. vue2实现自定义样式radio单选框
  9. Jmeter连接到Mysql
  10. springmvc学习笔记(19)-RESTful支持