使用Hive和iReport进行大数据分析
在JCG文章“ Hadoop模式介紹-獨(dú)立,偽分布式,分布式 ”中,JCG合作伙伴Rahul Patodi解釋了如何設(shè)置Hadoop 。 Hadoop項(xiàng)目已經(jīng)產(chǎn)生了許多用于分析半結(jié)構(gòu)化數(shù)據(jù)的工具,但是Hive也許是其中最直觀的工具,因?yàn)樗试S具有SQL背景的任何人提交被描述為SQL查詢的MapReduce作業(yè)。 Hive可以從命令行界面執(zhí)行,也可以在服務(wù)器模式下運(yùn)行,而Thrift客戶端充當(dāng)JDBC / ODBC接口,可以訪問數(shù)據(jù)分析和報(bào)告應(yīng)用程序。
在本文中,我們將設(shè)置一個(gè)Hive服務(wù)器,創(chuàng)建一個(gè)表,使用文本文件中的數(shù)據(jù)加載它,然后使用iReport創(chuàng)建一個(gè)Jasper Resport。 Jasper報(bào)表在Hive服務(wù)器上執(zhí)行SQL查詢,然后將其轉(zhuǎn)換為Hadoop執(zhí)行的MapReduce作業(yè)。
注意:我使用運(yùn)行OpenSuSE 12.1 Linux且安裝了MySQL 5.5的Hadoop版本0.20.205,Hive版本0.7.1和iReport版本4.5。
假設(shè)你已經(jīng)安裝了Hadoop的下載和安裝蜂巢下面的蜂巢 入門維基指令。 默認(rèn)情況下, Hive是在獨(dú)立Hadoop模式下運(yùn)行的CLI模式下安裝的。
制作多用戶Hive Metastore
默認(rèn)的Hive安裝使用derby嵌入式數(shù)據(jù)庫作為其元存儲(chǔ)。 Metastore是Hive維護(hù)我們要通過SQL訪問的數(shù)據(jù)的描述的地方。 為了使metastore同時(shí)可以從許多用戶訪問,必須將其移動(dòng)到獨(dú)立數(shù)據(jù)庫中。 這是安裝MySQL Metastore的方法。
這將填充您新創(chuàng)建的metastore模式。 如果您看到任何錯(cuò)誤,請檢查您的hive-default.xml配置,并確保您的數(shù)據(jù)庫模式被命名為“ metastore”,其中l(wèi)atin1作為默認(rèn)字符集。
 
 
 現(xiàn)在讓我們用一些數(shù)據(jù)填充Hadoop Hive 
我們只創(chuàng)建兩個(gè)名為file01和file02的文本文件,每個(gè)文件包含:
 file01 : 
 你好世界再見世界 
 大家好再見大家 
 file02 : 
 您好Hadoop再見Hadoop 
 大家好,大家再見 
將這些文件從本地文件系統(tǒng)復(fù)制到HDFS:
$ hadoop fs -mkdir HiveExample $ hadoop fs -copyFromLocal ~/file* /user/ssake/HiveExample轉(zhuǎn)到Hive CLI并創(chuàng)建一個(gè)名為testlines的表,該表將在字符串?dāng)?shù)組中包含每一行的單詞:
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;檢查測試行現(xiàn)在是否包含每行的單詞:
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現(xiàn)在我們有了一個(gè)包含數(shù)據(jù)的Hive,我們可以將其作為服務(wù)器在端口10000中運(yùn)行,這通常是運(yùn)行hive服務(wù)器的方式:
$ HIVE_PORT=10000 $ hive --service hiveserver通過此設(shè)置,可能有多個(gè)Thrift客戶端訪問我們的Hive服務(wù)器。 但是,根據(jù)Apache Hive博客 ,多線程Hive功能尚未經(jīng)過全面測試,因此每個(gè)Thrift客戶端使用單獨(dú)的端口和Hive實(shí)例更為安全。
創(chuàng)建“字?jǐn)?shù)統(tǒng)計(jì)”報(bào)告
iReport 4.5支持配置單元數(shù)據(jù)源,因此讓我們使用它來創(chuàng)建一個(gè)以配置單元服務(wù)器作為數(shù)據(jù)源運(yùn)行的報(bào)表:
1.創(chuàng)建一個(gè)連接到配置單元服務(wù)器的數(shù)據(jù)源
2.使用報(bào)告向?qū)蓤?bào)告
3.在“ HiveQL查詢”輸入框中鍵入以下內(nèi)容:
select word,count(word) from testlines lateral view explode(line) words as word group by word讓我們簡要解釋一下上述查詢的作用:
我們的源表“ testlines”表只有一個(gè)名為“ line”的列,其中包含字符串?dāng)?shù)組形式的數(shù)據(jù)。 每個(gè)字符串?dāng)?shù)組代表在導(dǎo)入文件“ file01 ”和“ file02 ”中找到的句子中的單詞。
為了正確計(jì)算所有輸入文件中每個(gè)不同單詞的出現(xiàn)次數(shù),我們必須將源表中的字符串?dāng)?shù)組“分解”為一個(gè)新單詞,其中應(yīng)包含每個(gè)單詞。 為此,我們將“側(cè)視圖”與HiveQL命令“ explode()”結(jié)合使用,如上所示。
在上面的HiveQL查詢中,我們創(chuàng)建了一個(gè)名為“ words”的新圖標(biāo)表,該表具有一個(gè)名為“ word”的列,其中包含從“ testlines”表的每個(gè)字符串?dāng)?shù)組中找到的所有單詞。
4.單擊…按鈕以選擇所有文件,然后單擊下一步。
5.在設(shè)計(jì)器視圖中,單擊“預(yù)覽”選項(xiàng)卡以執(zhí)行HiveQL報(bào)告
這是我們的報(bào)告:
現(xiàn)在,您已經(jīng)準(zhǔn)備好構(gòu)建使用熟悉的JDBC接口訪問Hadoop數(shù)據(jù)的應(yīng)用程序!
參考:我們的W4G合作伙伴 Spyros Sakellariou 使用Hive和iReport進(jìn)行大數(shù)據(jù)分析 。
翻譯自: https://www.javacodegeeks.com/2012/02/big-data-analytics-with-hive-and.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的使用Hive和iReport进行大数据分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 宝马 MINI 发布 Cooper E
- 下一篇: 使用SaxParser和完整代码进行XM
