使用Hive和iReport进行大数据分析
在JCG文章“ Hadoop模式介绍-独立,伪分布式,分布式 ”中,JCG合作伙伴Rahul Patodi解释了如何设置Hadoop 。 Hadoop项目已经产生了许多用于分析半结构化数据的工具,但是Hive也许是其中最直观的工具,因为它允许具有SQL背景的任何人提交被描述为SQL查询的MapReduce作业。 Hive可以从命令行界面执行,也可以在服务器模式下运行,而Thrift客户端充当JDBC / ODBC接口,可以访问数据分析和报告应用程序。
在本文中,我们将设置一个Hive服务器,创建一个表,使用文本文件中的数据加载它,然后使用iReport创建一个Jasper Resport。 Jasper报表在Hive服务器上执行SQL查询,然后将其转换为Hadoop执行的MapReduce作业。
注意:我使用运行OpenSuSE 12.1 Linux且安装了MySQL 5.5的Hadoop版本0.20.205,Hive版本0.7.1和iReport版本4.5。
假设你已经安装了Hadoop的下载和安装蜂巢下面的蜂巢 入门维基指令。 默认情况下, Hive是在独立Hadoop模式下运行的CLI模式下安装的。
制作多用户Hive Metastore
默认的Hive安装使用derby嵌入式数据库作为其元存储。 Metastore是Hive维护我们要通过SQL访问的数据的描述的地方。 为了使metastore同时可以从许多用户访问,必须将其移动到独立数据库中。 这是安装MySQL Metastore的方法。
- 将MySQL JDBC驱动程序 jar文件复制到〜/ hive-0.7.1-bin / lib目录
- 更改〜/ hive-0.7.1-bin / conf目录中的文件hive-default.xml中的以下属性:
<property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://hyperion/metastore?createDatabaseIfNotExist=true</value><description>JDBC connect string for a JDBC metastore</description> </property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value><description>Driver class name for a JDBC metastore</description> </property><property><name>javax.jdo.option.ConnectionUserName</name><value>foo</value><description>Username to connect to the database</description> </property><property><name>javax.jdo.option.ConnectionPassword</name><value>bar</value><description>Password to connect to the database</description> </property>
- 使用MySQL工作台或MySQL命令行实用程序使用latin1字符集创建模式。 如果Hive找不到模式,它将使用MySQL的默认字符集自行创建模式。 在我的情况下,这是UTF-8,并生成了jdbc错误。 如果要使用命令行实用程序,请键入:
mysql> CREATE DATABASE IF NOT EXISTS `metastore` DEFAULT CHARACTER SET latin1 COLLATE latin1_bin;
- 在命令提示符下键入Hive以输入Hive CLI并键入:
hive> SHOW TABLES; OK testlines Time taken: 3.654 seconds hive>
这将填充您新创建的metastore模式。 如果您看到任何错误,请检查您的hive-default.xml配置,并确保您的数据库模式被命名为“ metastore”,其中latin1作为默认字符集。
现在让我们用一些数据填充Hadoop Hive
我们只创建两个名为file01和file02的文本文件,每个文件包含:
file01 :
你好世界再见世界
大家好再见大家
file02 :
您好Hadoop再见Hadoop
大家好,大家再见
将这些文件从本地文件系统复制到HDFS:
$ hadoop fs -mkdir HiveExample
$ hadoop fs -copyFromLocal ~/file* /user/ssake/HiveExample
转到Hive CLI并创建一个名为testlines的表,该表将在字符串数组中包含每一行的单词:
hive> create table testlines (line array<string>) row format delimited collection items terminated by ' ';
将文本文件加载到Hive中:
hive> load data inpath "/user/ssake/HiveExample/file01" INTO table testlines;
hive> load data inpath "/user/ssake/HiveExample/file02" INTO table testlines;
检查测试行现在是否包含每行的单词:
hive> select * from testlines;
OK
["Hello","World","Bye","World"]
["Hello","Everybody","Bye","Everybody"]
["Hello","Hadoop","Goodbye","Hadoop"]
["Hello","Everybody","Goodbye","Everybody"]
Time taken: 0.21 seconds
现在我们有了一个包含数据的Hive,我们可以将其作为服务器在端口10000中运行,这通常是运行hive服务器的方式:
$ HIVE_PORT=10000
$ hive --service hiveserver
通过此设置,可能有多个Thrift客户端访问我们的Hive服务器。 但是,根据Apache Hive博客 ,多线程Hive功能尚未经过全面测试,因此每个Thrift客户端使用单独的端口和Hive实例更为安全。
创建“字数统计”报告
iReport 4.5支持配置单元数据源,因此让我们使用它来创建一个以配置单元服务器作为数据源运行的报表:
1.创建一个连接到配置单元服务器的数据源
2.使用报告向导生成报告
3.在“ HiveQL查询”输入框中键入以下内容:
select word,count(word) from testlines lateral view explode(line) words as word group by word
让我们简要解释一下上述查询的作用:
我们的源表“ testlines”表只有一个名为“ line”的列,其中包含字符串数组形式的数据。 每个字符串数组代表在导入文件“ file01 ”和“ file02 ”中找到的句子中的单词。
为了正确计算所有输入文件中每个不同单词的出现次数,我们必须将源表中的字符串数组“分解”为一个新单词,其中应包含每个单词。 为此,我们将“侧视图”与HiveQL命令“ explode()”结合使用,如上所示。
在上面的HiveQL查询中,我们创建了一个名为“ words”的新图标表,该表具有一个名为“ word”的列,其中包含从“ testlines”表的每个字符串数组中找到的所有单词。
4.单击…按钮以选择所有文件,然后单击下一步。
5.在设计器视图中,单击“预览”选项卡以执行HiveQL报告
这是我们的报告:
现在,您已经准备好构建使用熟悉的JDBC接口访问Hadoop数据的应用程序!
参考:我们的W4G合作伙伴 Spyros Sakellariou 使用Hive和iReport进行大数据分析 。
翻译自: https://www.javacodegeeks.com/2012/02/big-data-analytics-with-hive-and.html
使用Hive和iReport进行大数据分析相关推荐
- 大数据分析 es hive_使用Hive和iReport进行大数据分析
大数据分析 es hive 每个JJ Abrams的电视连续剧疑犯追踪从主要人物芬奇先生一个下列叙述情节开始:" 你是被监视. 政府拥有一个秘密系统-每天每天每小时都会对您进行监视的机器. ...
- hive 语句总结_大数据分析工程师面试集锦4-Hive
导语 本篇文章为大家带来Hive面试指南,文内会有两种题型,问答题和代码题,题目一部分来自于网上,一部分来自平时工作的总结 精选题型 Hive可考察的内容有:基本概念.架构.数据类型.数据组织.DDL ...
- hive基于新浪微博的日志数据分析——项目及源码
有需要本项目的全套资源资源以及部署服务可以私信博主!!! 该系统的目的是利用大数据技术,分析新浪微博的日志数据,从而探索用户行为.内容传播和移动设备等各个层面的特性和动向.这项研究为公司和个人在制定营 ...
- 大数据分析处理框架——离线分析(hive,pig,spark)、近似实时分析(Impala)和实时分析(storm、spark streaming)...
大数据分析处理架构图 数据源: 除该种方法之外,还可以分为离线数据.近似实时数据和实时数据.按照图中的分类其实就是说明了数据存储的结构,而特别要说的是流数据,它的核心就是数据的连续性和快速分析性: 计 ...
- clickhouse大数据分析技术与实战_比Hive快500倍!大数据实时分析领域的黑马
戳蓝字"小强的进阶之路"关注我们哦! 大数据实时分析领域的黑马是ClickHouse一个用于联机分析(OLAP)的列式数据库管理系统(DBMS). clickhouse背景 俄罗斯 ...
- 从零到一搭建大数据分析引擎HIVE
从零到一搭建大数据分析引擎HIVE 1.集群的规划 2.安装步骤 1.下载hive安装包 2.利用docker安装mysql 3.修改hive的配置文件 4.增加hive-site.xml配置文件 5 ...
- 基于Hadoop的豆瓣电影的数据抓取、数据清洗、大数据分析(hdfs、flume、hive、mysql等)、大屏可视化
目录 项目介绍 研究背景 国内外研究现状分析 研究目的 研究意义 研究总体设计 数据获取 网络爬虫介绍 豆瓣电影数据的采集 数据预处理 数据导入及环境配置 Flume介绍 Hive介绍 MySQL介绍 ...
- 淘宝双11大数据分析(Hive 分析篇-上)
文章目录 前言 当前环境 用聚合函数 count() 计算出表内有多少条数据 查出 user_id 不重复的数据的条数 查询不重复的数据有多少条(为了排除客户刷单的情况) 关键字条件查询分析 查询双1 ...
- 大数据分析中使用关系型数据库的关键点
相当一部分大数据分析处理的原始数据来自关系型数据库,处理结果也存放在关系型数据库中.原因在于超过99%的软件系统采用传统的关系型数据库,大家对它们很熟悉,用起来得心应手. 在我们正式的大数据团队,数仓 ...
最新文章
- Orchard: Shape展现介绍
- python os.path.exists()(用于判断文件夹路径是否存在)
- Linux新手上路命令
- LeetCode - Easy - 169. Majority Element
- 客座编辑:武永卫,男,博士,清华大学计算机科学与技术系教授。
- jnativecpp.dll一定要放到系统目录下吗_「实用」室内甲醛到底该如何去除?关键要做到这两点...
- 为AI芯片铺路?原三星半导体周军加盟Rokid
- 【收藏】10个重要问题概览Transformer全部内容
- 你能相信这些逼真的油画是前端小姐姐只用HTML+CSS画出来的吗?精细到毛发,让美术设计也惊叹丨GitHub热榜...
- Csharp: Searching Within a String
- Qt echarts 教程(2):qt echarts 数据动态绑定
- java获取excel行数_Java如何利用POI读取Excel行数
- [转]多普达818、828+升级中文WM6.1及必装软件全过程讲解
- sql登录名和用户名_通过分配角色和权限来移动或复制SQL登录名
- 网友们碰到过的最难调试的 Bug
- Django项目骨架与常见配置修改
- 给我两小时,我能写很长长长长长长的APP测试用例!
- CF1658F 题解
- 映客前端面经(已经oc)
- 美容仪洁面器无线充电方案XS016
热门文章
- 实现滚到div时淡入效果
- kafka 发布-订阅模式_使用Apache Kafka作为消息系统的发布-订阅通信中的微服务,并通过集成测试进行了验证...
- camel apache_Apache Camel 3 –新增功能前10名
- vue中生产模式和调试模式_为什么在生产中进行调试是如此诱人?
- java调用命令行命令_Java命令行界面(第4部分):命令行
- 记录日志的测试软件_教程:测试期间的日志记录
- java 性能调优_Java性能调优调查结果(第三部分)
- 定制基元和DTO的(反)序列化和验证
- 使用Spring Boot 2.0的Spring Security:保护端点
- javaone_Javaone 2013评论