天天看點

HIVE 牛刀小試 (僞分布式版本)

最近一直用hadoop處理資料,處理完以後要對資料進行分析,由于我們的資料不是很大,每次我都是把要分析的檔案從hdfs下載下傳到本地,然後再用python、shell腳本進行分析與統計,那hadoop生态系統中都有什麼資料分析工具呢,目前據我所知,有兩個:pig和hive。因為pig我以前看過,需要用pig lation(pig自己的腳本語言),為了省事,我這次直接看基于sql語句的hive。pig與hive的差別《hadoop in action》書中是這麼定義的:

pig----a high-level data flow language

hive------a sql-like data warehouse infrastructure

廢話不多說,直接實戰:

第一步:配置hadoop環境

第二步:下載下傳hive

在apache的官網,我下載下傳的是這麼一個檔案hive-0.11.0.tar.gz

第三步:配置hive

由于hive需要存放metastore,這裡我們使用jdbc compliant(即jdbc相容)資料庫,hive自帶了一個derby,我們用自帶的即可,這裡無需做任何操作。

第四步:配置環境變量

把hive/bin加到path中,編輯.profile檔案,可以輸入以下指令:

我機器的配置這麼樣的:

這麼配置好,以後在執行hadoop相關指令時有可能會出現個warning,提示$hadoop_home is deprecated,在hadoop/conf/hadoop-env.sh檔案中添加這麼一行就行了:

然後再執行以下指令:

這些指令主要是建立hive資料的存放路徑,并讓使用者所屬組有寫 

到現在hive就應該能正常運作了。

-----------------------------------------------------------------------------hive常用操作---------------------------------------------------------------------------------------------------------------------------------

1.建立表的完整語句

[external]表示可選項,表示建立表的資料來源于已有的hdfs檔案

partitioned by語句主要是為了處理子檔案夾的情況

clustered by語句主要是控制生成的part-0000*的檔案個數

stored as語句說明表檔案存放的格式,現在隻有兩種。

2.partitioned by語句用法

我的情況,日志檔案按日存放,每一天一個檔案夾,像

/data/log/2013/10/10

/data/log/2013/10/11

/data/log/2013/10/12

..................

/data/log/2013/11/10

/data/log/2013/11/11

....................

這樣的形式,為了把這些檔案中的資料存放到hive的表中,我們需要用partitioned

我們首先建立這麼一個表

然後在用這條語句進行log表的修改

這樣就把10月10号這天的日志包含進log表了

3.表的連接配接join

一個模闆:

現在hive中的join隻支援“相等”連接配接。