實操用Hive分析大數據事半功倍

  • 2019 年 10 月 6 日
  • 筆記

一般我們分析大數據,也許會想到Spark、Storm,但前提得會JAVA等程式語言,不然拿到數據也無法做分析。而Hive而解決了這個問題,只需要會Sql語言即可做mapreduce的大數據分析任務。今天我們創建測試數據用Hive進行mapreduce的實際分析。

一、先安裝好Hive、Mysql環境

1、在昨天hdfs的基礎上,安裝Hive、Mysql。

2、因Hive依賴於Mysql存儲元數據、依賴於Hdfs存儲cell數據,在Hive中配置好Mysql的帳號、密碼。

3、在Mysql中創建Hive資料庫,新建Mysql的資料庫帳號、密碼。

二、創建測試數據

1、創建file測試數據

cd /usr/local/hadoop

mkdir input

echo "hello world" >file1.txt

echo "hello hadoop" >file2.txt

2、進入hive,將file導入到hive數據表中

hive> create table docs(line string); //創建僅有一個列元素的表

hive> load data local input '/usr/local/hadoop/input' overwrite into table docs; //將input目錄下的file1、file2倒入hive docs表格中。

用select * from docs證實數據倒入成功。

三、創建測試分析任務

1、用sql語句進行word count的分析處理。

create table word_count as select word,count(1) as count from (select explode(split(line,' ')) as word from docs) w group by word order by word;

2、檢查mapreduce任務

檢查mapreduce進程,上面的語句啟動了mapreduce任務。

3、檢查結果

用select * from word_count,發現word count的任務成功完成。

四、小結

1、hive依賴於mysql存元數據,依賴於hdfs存儲資料庫文件,是一個廉價的數據倉庫。

2、hive用sql語句創建mapreduce任務,適用於非實時的數據分析處理。