目录:
一、本地数据集上传到数据仓库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. Blazor 版 Bootstrap Admin 通用后台权限管理框架

    前言 上一篇介绍过了前后台分离的 NET Core 通用权限管理系统 在这篇文章简要的介绍了 Bootstrap Admin 后台管理框架的一些功能.本篇文章带来的是微软最新出的 Blazor 版本的 ...

  2. eclipse maven 项目导出为 jar 包

    一个 maven 项目有很多依赖,所以最后打出的 jar 一般会很多,且比较大,打成 jar 包的步骤 (注意pom.xml文件中打包类型不能是war包): 1. 把 pom.xml 中依赖的库打成 ...

  3. Spring Boot Validation,既有注解不满足,我是怎么暴力扩展validation注解的

    前言 昨天,我开发的代码,又收获了一个bug,说是界面上列表查询时,正常情况下,可以根据某个关键字keyword模糊查询,后台会去数据库 %keyword%查询(非互联网项目,没有使用es,只能这样了 ...

  4. mac版 sublime快捷键大全

    按这几大类分类:文件 编辑 选择 查找 视图 去往 工具 项目 窗口 帮组一.文件cmd + N 新建文件cmd + S 保存文件cmd + shift + S 文件另存为cmd + alt + S ...

  5. 深入理解 Java 反射和动态代理

  6. 基于 HTML5 + WebGL 的 3D 太阳系系统

    前言 近年来随着引力波的发现.黑洞照片的拍摄.火星上存在水的证据发现等科学上的突破,以及文学影视作品中诸如<三体>.<流浪地球>.<星际穿越>等的传播普及,宇宙空间 ...

  7. 冒泡排序 C&&C++

    冒泡排序(因为过程像冒泡,所以叫做冒泡排序)   流程: (1)对数组中各个数字,一次比较相邻两个 (2)如果前面大于后面,就交换这两个数据 (3)再用同样的方法继续排,直到外层循环排完 或者 (1) ...

  8. 70道阿里百度高频Java面试题(框架+JVM+多线程+算法+数据库)

    基础与框架 1.String类能被继承吗,为什么 2.String,Stringbuffer,StringBuilder的区别? 3.ArrayList和LinkedList有什么区别 4.类的实例化 ...

  9. xshell连接问题记录

    操作系统Ubuntu 18.04 安装ubuntu后,连接不上.ubuntu18会每次重启重写dns,导致每次开机ip地址都不一样,所以需要先固定IP ubuntu18.04固定ip 修改固定 IP ...

  10. ES6 promise 使用示例

    new Promise(function (resolve, reject) { $.ajax({ type : 'post', data : formData, dataType : 'json', ...