使用Hive和iReport進行大數據分析

每個JJ Abrams的電視連續劇疑犯追蹤從主要人物芬奇先生一個下列敘述情節開始:“ 你是被監視。 政府擁有一個秘密系統-每天每天每小時都會對您進行監視的機器。 我知道是因為...我建造了它。 “當然,我們的技術人員知道得更多。 龐大的電氣和軟件工程師團隊需要花費多年的時間來制造如此高性能的機器,而預算卻是無法想象的……或者不是嗎? 等一下,我們有了Hadoop ! 現在,由于有了Hadoop ,我們每個人都可以成為Finch先生,預算不高。

在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的方法。

  1. 將MySQL JDBC驅動程序 jar文件復制到?/ hive-0.7.1-bin / lib目錄
  2. 更改?/ 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>
  3. 使用MySQL工作臺或MySQL命令行實用程序使用latin1字符集創建模式。 如果Hive找不到模式,它將使用MySQL的默認字符集自行創建模式。 在我的情況下,這是UTF-8,并生成了jdbc錯誤。 如果要使用命令行實用程序,請鍵入:
    mysql> CREATE DATABASE  IF NOT EXISTS `metastore` DEFAULT CHARACTER SET latin1 COLLATE latin1_bin;
  4. 在命令提示符下鍵入Hive以輸入Hive CLI并鍵入:
    hive> SHOW TABLES;
    OK
    testlines
    Time taken: 3.654 seconds
    hive>

    這將填充您新創建的metastore模式。 如果您看到任何錯誤,請檢查您的hive-default.xml配置,并確保您的數據庫模式被命名為“ metastore”,其中latin1作為默認字符集。



現在讓我們用一些數據填充Hadoop Hive

我們只創建兩個名為file01file02的文本文件,每個文件包含:

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373373.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373373.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373373.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

docker集群管理

docker集群管理 ps&#xff1a;docker machine docker swarm docker compose 在Docker Machine發布之前&#xff0c;你可能會遇到以下問題&#xff1a; 你需要登錄主機&#xff0c;按照主機及操作系統特有的安裝以及配置步驟安裝Docker&#xff0c;使其能運行Docker…

從0學java_從零開始學JAVA(一.Java的基礎語法)

基本語法編寫 Java 程序時&#xff0c;應注意以下幾點&#xff1a;大小寫敏感&#xff1a;Java 是大小寫敏感的&#xff0c;這就意味著標識符 Hello 與 hello 是不同的。類名&#xff1a;對于所有的類來說&#xff0c;類名的首字母應該大寫。如果類名由若干單詞組成&#xff0c…

linux mount (掛載命令)詳解

掛接命令(mount) 首先&#xff0c;介紹一下掛接(mount)命令的使用方法&#xff0c;mount命令參數非常多&#xff0c;這里主要講一下今天我們要用到的。 命令格式&#xff1a;mount [-t vfstype] [-o options] device dir 其中&#xff1a; 1.-t vfstype 指定文件系統的類型&…

Android官方培訓課程中文版(v0.9.5)

http://hukai.me/android-training-course-in-chinese/index.html轉載于:https://www.cnblogs.com/xiaoyao095/p/6125715.html

使用SaxParser和完整代碼進行XML解析

SAX解析器使用回調函數&#xff08;org.xml.sax.helpers.DefaultHandler&#xff09;通知客戶端XML文檔結構。 您應該擴展DefaultHandler并重寫一些方法來實現xml解析。 覆蓋的方法是 startDocument&#xff08;&#xff09;和endDocument&#xff08;&#xff09;–在XML文檔…

mysql添加字符串日期時間_mysql學習筆記--- 字符串函數、日期時間函數

一、常見字符串函數&#xff1a;1、CHAR_LENGTH 獲取長度(字符為單位)2、FORMAT 格式化3、INSERT 替換的方式插入4、INSTR 獲取位置5、LEFT/RIGHT 取左、取右6、LENGTH 獲取長度(字節為單位)7、LTRIM/RTRIM/TRIM 去空格(左/右/自定義)8、STRCMP 字符串比較9、CONCAT 字…

Android異常和工具使用筆記

Android異常和工具使用筆記 1、r文件找不到去你的工程目錄下&#xff0c;手動的把gen刪掉&#xff0c;然后去project中刷新一下&#xff0c;在編譯看看。以前遇到過類似的問題&#xff0c;實在不行就把你的eclispe,adt升級到最新的版本吧 抓住那么一點點線索&#xff0c;就要去…

ADO.NET 核心對象簡介

ADO.NET ADO.NET是.NET中一組用于和數據源進行交互的面向對象類庫&#xff0c;提供了數據訪問的高層接口。 ADO.NET類庫在System.Data命名空間內&#xff0c;根據我們訪問的不同數據庫選擇命名空間&#xff0c;System.Data.SqlClient。 ADO.NET類最重要的優點是支持數據庫以斷開…

MongoDB與Spring Data項目

如今&#xff0c;我們所有人都在觀察NoSql解決方案的爆炸式增長。 我已經習慣了RDBMS&#xff0c;但這些并不是您可能遇到的所有挑戰的解決方案。 根據最近的經驗&#xff0c;我有機會使用MongoDB –文檔數據庫。 在本文中&#xff0c;我打算介紹將MongoDB與Spring Data項目一起…

java轉換為字符串_java – 如何從int轉換為字符串?

正常方式是Integer.toString(i)或String.valueOf(i)。串聯將工作&#xff0c;但它是非常規的&#xff0c;可能是一個難聞的氣味&#xff0c;因為它暗示作者不知道上述兩種方法(他們不知道什么&#xff1f;)。Java在使用字符串(見the documentation)時對操作符提供了特殊的支持&…

簡學LINGO(三)——實例篇

1. 裝配線平衡模型 一個裝配線含有一系列的工作站。在終于產品的加工過程中每一個工作站運行一種或者是幾種特定的任務。裝配線周期是指全部工作站完畢分配給他們各自任務所花費時間的最大值。平衡裝配線的目標是為每一個工作站分配加工任務。盡可能使每一個工作站運行同樣數量…

Hibernate緩存級別教程

開始使用Hibernate的人們常見的問題之一就是性能&#xff0c;如果您沒有太多的Hibernate經驗&#xff0c;您會發現應用程序變慢的速度。 如果啟用sql跟蹤&#xff0c;您將看到有多少查詢被發送到數據庫&#xff0c;而這些查詢幾乎不需要Hibernate知識就可以避免。 在當前文章中…

java方法執行的時間_計算Java中任意一個方法的執行時間的工具類

1 packagealgorithm.study.utils;23 importjava.lang.reflect.Method;45 /**6 * This class is getting a method execute time and provide some other functions.7 *8 *authorygh 2017年2月24日9 */10 public classMethodExecuteTimeUtils {1112 /**13 * Get a method execut…

如何在 IIS 中設置 HTTPS 服務

Windows Server2008、IIS7啟用CA認證及證書制作完整過程 這篇文章介紹了如何安裝證書申請工具&#xff1b; 如何在iis創建證書申請&#xff1b; 如何使用iis申請證書生成的txt文件&#xff0c;在工具中開始申請證書&#xff1b; 如何導出證書&#xff1b; 以及在網站中開始使用…

Android之衛星菜單的實現

衛星菜單是現在一個非常受歡迎的“控件”&#xff0c;很多Android程序員都趨之若鶩&#xff0c;預覽如下圖。傳統的衛星菜單是用Animation實現的&#xff0c;需要大量的代碼&#xff0c;而且算法極多&#xff0c;一不小心就要通宵Debug。本帖貼出用屬性動畫Animator來實現衛星菜…

Java中的WADL:溫和的介紹

WADL&#xff08; Web應用程序描述語言 &#xff09;對REST而言&#xff0c;WSDL對SOAP而言。 這種語言的僅僅存在引起了很多爭議&#xff08;請參閱&#xff1a; 我們需要WADL嗎&#xff1f; 或者 需要 WADL還是不需要WADL &#xff09;。 我可以想到使用WADL的一些合法用例&a…

類成員函數模板特化

//類成員函數模板特化 #include <stdio.h> class A{ public:template <class T>void Print(){printf("A template\n");} };template<> void A::Print<int>(){printf("int\n"); }int main(){A a;a.Print<double>();a.Print&l…

為云量身定制您的服務

相信大家都聽說過Amazon的AWS。作為業內最為成熟的云服務提供商&#xff0c;其運行規模&#xff0c;穩定性&#xff0c;安全性都已經經過了市場的考驗。時至今日&#xff0c;越來越多的應用被部署在了AWS之上。這其中不乏Zynga及Netflix這樣著名的服務。 然而這一切并沒有停滯不…

在Vaadin和JSF之間選擇

隨著最新版本的Primefaces 3.0的發布&#xff0c;JSF終于達到了前所未有的成熟度和實用性&#xff0c;使其與其他流行的Rich Internet Applications&#xff08;RIA&#xff09;選項如Google Web Toolkit&#xff08;GWT&#xff09;&#xff0c;ExtJS&#xff0c;Vaadin&#…

20145202馬超《信息安全系統設計基礎》實驗二總結

[實驗二]&#xff08;http://www.cnblogs.com/nizaikanwoma/p/6131778.html&#xff09; 轉載于:https://www.cnblogs.com/tuolemi/p/6131987.html