目录:
一、本地数据集上传到数据仓库Hive
二、Hive的基本操作
三、Hive、Mysql、HBase数据互导

正文:
一、本地数据集上传到数据仓库Hive
1.实验数据集的下载
2.数据集的预处理
⁃ 1)删除文件第一行记录
⁃ sed -i ‘1d’ filename #1d表示删除第一行,同理,nd表示删除第n行
⁃ 2)对字段进行预处理
3.把得到的.txt文件导入Hive
基本思路:先将.txt文件上传到分布式文件系统HDFS,然后在Hive中创建一个外部表,完成导入
• 1)启动HDFS
• jps #该命令用于查看当前运行的进程
• 2)启动Hadoop
⁃ cd /usr/local/hadoop/sbin #进入/hadoop/sbin文件夹下运行
⁃ ./start-all.sh
• 3)启动mysql(这一步不需要,只是备注)
• sudo service mysql start
• 4)把.txt本地文件上传到HDFS中
• cd /usr/local/hadoop
• ./bin/hdfs dfs -mkdir -p /bigdatacase/dataset #在HDFS的根目录下面创建一个新的目录bigdatacase,并在这个目录下创建一个子目录dataset
• ./bin/hdfs dfs -put /本地文件存放的目录/filename /bigdatacase/dataset
• ./bin/hdfs dfs -cat /bigdatacase/dataset/filename | head -5 #查看hdfs上文件的前五行

(./bin/hdfs dfs 可以直接换成 hadoop fs)

二、Hive的基本操作
1.在Hive上创建数据库
• 1)启动Hive(前提需要首先启动Hadoop、Mysql)
• cd /usr/local/hive
• ./bin/hive
• (可以直接在终端窗口输入hive,进入hive命令行)
• 2)创建数据库
• create databases name;
• 3)创建外部表
• create external table db.data(id int, uid string, data date) comment ‘Welcome’ row format delimited fields terminated by ‘\t’ stored as textfile location ‘/bigdatacase/dataset';
• show create table data; #查看表的各种属性
• desc data; #查看表的简单结构
2.Hive的查询语句
• 1)嵌套查询+取别名
• select e.bh, e.it from (select behavior_type as bh, item_category as it from bigdata_user) as e limit 20;
• 2)统计分析
• >聚合函数count()
• select count() from data;
• >去重distinct
• select count(distinct id) from data;
• >例:查询不重复的数据有多少条
• select count(
) from (select id,status,loc from data group by id,status,loc having count(*)=1) a

注意:嵌套语句最好取别名,就是上面的a,否则很容易出现如下错误.

• 3)关键字条件查询
• select count() from bigdata_user where behavior_type='1' and visit_date<'2014-12-13' and visit_date>'2014-12-10';
• select count(distinct uid), day(visit_date) from bigdata_user where behavior_type='4' group by day(visit_date);
• select count(
) from bigdata_user where province='江西' and visit_date='2014-12-12' and behavior_type='4';
• 4)根据用户行为分析
• select count() from bigdata_user where visit_date='2014-12-11'and behavior_type='4'; #查询有多少用户在2014-12-11购买了商品
• select count(
) from bigdata_user where visit_date ='2014-12-11'; #查询有多少用户在2014-12-11点击了该店
• select count() from bigdata_user where uid=10001082 and visit_date='2014-12-12'; #查询用户10001082在2014-12-12点击网站的次数
• select count(
) from bigdata_user where visit_date='2014-12-12'; #查询所有用户在这一天点击该网站的次数
• select uid from bigdata_user where behavior_type='4' and visit_date='2014-12-12' group by uid having count(behavior_type='4')>5; #查询某一天在该网站购买商品超过5次的用户id
• 5)用户实时查询分析
• create table scan(province STRING,scan INT) COMMENT 'This is the search of bigdataday' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE; #创建新的数据表进行存储
• insert overwrite table scan select province,count(behavior_type) from bigdata_user where behavior_type='1' group by province; #导入数据
• select * from scan; #显示结果

三、Hive、Mysql、HBase数据互导
1.准备工作
• 1)启动Hadoop、Mysql、Hive
• 2)新建一个临时表,把另一个表的数据插入进去
• create table data2 like data;
• insert overwrite table db.data2 select * from data;
2.使用Sqoop将数据从Hive导入到Mysql
• 1)登陆Mysql,并创建数据库、表
• mysql -u root -p
• create database db;
• use db;
• show variables like "char%"; #查看数据库的编码
• set character_set_server=utf8 #设置当前编码为utf8,保证中文的正常导入
• create table data(id int,status int,uid` varchar(50)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
• exit #退出
• 2)导入数据(进入sqoop的目录运行)
• ./bin/sqoop export ##表示数据从 hive 复制到 mysql 中
• --connect jdbc:mysql://localhost:3306/数据库名
• --username root #mysql登陆用户名
• --password strongs #登录密码
• --table data #mysql 中的表,即将被导入的表名称
• --export-dir '/user/hive/warehouse/dblab.db/user_action ' #hive 中被导出的文件
• --input-fields-terminated-by ‘.’
• --fields-terminated-by '\t' #Hive 中被导出的文件字段的分隔符
3.使用Sqoop将数据从Mysql导入HBase
• 1)启动Hadoop、MySQL
• 2)启动HBase和HBase shell(进入/hbase目录)
• ./bin/start-hbase.sh
• ./bin/hbase shell
• 3)创建表
• create 'user_action', { NAME => 'f1', VERSIONS => 5} #创建了一个user_action表,这个表中有一个列族f1(你愿意把列族名称取为其他名称也可以,比如列族名称为userinfo),历史版本保留数量为5。
• 4)导入数据(新开一个页面,进入sqoop的目录运行)
• ./bin/sqoop import
• --connect jdbc:mysql://localhost:3306/dblab
• --username root
• --password hadoop
• --table user_action
• --hbase-table user_action #HBase中表名称
• --column-family f1 #列簇名称
• --hbase-row-key id #HBase 行键
• --hbase-create-table #是否在不存在情况下创建表
• -m 1 #启动 Map 数量
• 5)查看导入的数据(切换到HBase Shell运行到窗口)
• scan 'user_action',{LIMIT=>10}

Hadoop生态体系组件的更多相关文章

  1. Hadoop生态体系

    Hadoop路线 HDFS  分布式文件系统 MapReduce  分布式编程框架 ZooKeeper  分布式协调框架 Hive  非关系型数据仓库 Flume  日志采集框架

  2. Hadoop从入门到精通系列之--0.Hadoop生态体系

    https://blog.csdn.net/Haidaiya/article/details/84568588#%E4%B8%80%20%E5%A4%A7%E6%95%B0%E6%8D%AE%E7%9 ...

  3. Hadoop学习-生态体系(ecosystem)概览

    0. 大背景 全球No.1搜索引擎公司谷歌(Google)面临每天海量搜索引擎数据的问题,经过长时间的实践积累, 谷歌形成了自己的大数据框架,但是并没有开源,而是发表了一篇论文,阐述了自己的思想,在论 ...

  4. Hadoop优势,组成的相关架构,大数据生态体系下的模式

    Hadoop优势,组成的相关架构,大数据生态体系下的模式 一.Hadoop的优势 二.Hadoop的组成 2.1 HDFS架构 2.2 Yarn架构 2.3 MapReduce架构 三.大数据生态体系 ...

  5. Hadoop生态圈-大数据生态体系快速入门篇

    Hadoop生态圈-大数据生态体系快速入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.大数据概念 1>.什么是大数据 大数据(big data):是指无法在一定时间 ...

  6. Hadoop演进与Hadoop生态

    1.了解对比Hadoop不同版本的特性,可以用图表的形式呈现. (1)0.20.0~0.20.2: Hadoop的0.20分支非常稳定,虽然看起来有些落后,但是经过生产环境考验,是 Hadoop历史上 ...

  7. Hadoop生态常用数据模型

    Hadoop生态常用数据模型 一.TextFile 二.SequenceFile 1.特性 2.存储结构 3.压缩结构与读取过程 4.读写操作 三.Avro 1.特性 2.数据类型 3.avro-to ...

  8. 安装高可用Hadoop生态 (一 ) 准备环境

    为了学习Hadoop生态的部署和调优技术,在笔记本上的3台虚拟机部署Hadoop集群环境,要求保证HA,即主要服务没有单点故障,能够执行最基本功能,完成小内存模式的参数调整. 1.    准备环境 1 ...

  9. 第一周-----Java 的核心优势和生态体系——程序员们希望他们编写的程序能够运行在不同的机器,不同的环境中,这需要一种体系中立的语言(即跨平台)。

    跨平台是Java 语言的核心优势,赶上最初互联网的发展,并随着互联网的发展而发展,建立了强大的生态体系,目前已覆盖IT各个行业的“第一大语言,称为IT界的英语”

随机推荐

  1. 我的第一个 python 爬虫脚本

    #!/usr/bin/env python# coding=utf-8import urllib2from bs4 import BeautifulSoup #res = urllib.urlopen ...

  2. 深入理解Android异步消息处理机制

    一.概述 Android 中的异步消息处理主要分为四个部分组成,Message.Hndler.MessageQueue 和 Looper.其关系如下图所示: 1. Message 是线程之间传递的消息 ...

  3. luogu P3572 [POI2014]PTA-Little Bird |单调队列

    从1开始,跳到比当前矮的不消耗体力,否则消耗一点体力,每次询问有一个步伐限制,求每次最少耗费多少体力 #include<cstdio> #include<cstring> #i ...

  4. iOS RSA加解密签名和验证

    转自:http://www.jianshu.com/p/81b0b54436b8 Pre:在公司负责了一个项目,需要用到iOS RSA验证签名的功能.后台给我的仅仅是一个公钥的字符串.经过起初的一段时 ...

  5. jQuery操作页面的元素

    主要有添加,替换,删除,清空三种方式: 添加又分为,在之前添加,在之后添加,在元素外之前添加,在元素外之后添加.每个添加方式又有俩种方法(效果一模一样): 俩种方法区添加,在原内容之后: p.appe ...

  6. [TimLinux] JavaScript 模态框可拖动功能实现——节流版

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  7. ZOJ-1709

    The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. GeoSu ...

  8. .net core 3.1简体中文语言包,英文只能提示变成中文!

    .net core 3.1简体中文语言包,英文只能提示变成中文!这个是我自己手动用谷歌翻译翻译的一批文档,已经把.net core3.1完全翻译了,由于是翻译器翻译,所以怕翻译有错漏,所以没有去掉英文 ...

  9. ubuntu用户帐号

    与用户帐号相关的有几个非常重要的文件/ect/passwd,/etc/shadow,/etc/group /etc/passwd 执行 head -n 5 /ect/passwd显示前5行,内容如下: ...

  10. Nios II的Boot过程分析

    目录 1       概述....................................................................... 1 2       几种常见的 ...