hive是半個資料庫,真正資料是儲存在hdfs中,元資料(表結構)存在derby[mysql]裡,它會把hql語句(類sql)翻譯成mapreduce(hive1.x),spark....(hive2.x),(hive2.x不提倡使用mapreduce,但還可以做測試)
hive的查詢效率取決於底層的計算引擎~
hive應用場景:靜態資料分析,資料不會頻繁變化,不需要實時響應結果。
hive的限制:不支援行級的處理(插入,刪除),只能插入,刪除一張表。不支援事物。
vim /etc/profile
# 檔案中新增
export hadoop_home=/usr/local/hadoop
export hive_home=/usr/local/hive
export path=$path:$hadoop_home/bin:$hadoop_home/sbin
export path=$path:$hive_home/bin
# 存檔退出後執行,使配置立馬生效
source /etc/profile
檢查配置是否生效:
echo $hive_home
# 若輸出hive的安裝目錄,則說明配置生效
hive
# 若出現內容則說明path配置生效,沒生效會提示找不到命令(報錯是因為hive沒有安裝完,正常)
cd /usr/local/src/hive/conf
cp hive-default.xml.template hive-site.xml
# 修改 為false,預設是true。(原因不明)
hive.metastore.schema.verification
#建立目錄,用來替換$ 注意有多處,都需要替換,見下圖
mkdir /usr/local/src/hive/tmp
# 用當前登入使用者替換$,見下圖
正常生產環境中,hive的表結構和元資料是儲存在mysql、oracle、postgresql等資料庫中的,但是我們只是用hive做測試,則只需要初始化hive自帶的測試資料庫derby即可。命令如下(hive安裝路徑下執行)
# 如果mysql,就把最後的資料庫改為mysql
schematool -initschema -dbtype derby
# 注意此命令會在當前目錄下建立metastore_db,所以每次執行命令一定要在同一路徑下執行
# 之後,hive安裝路徑下會出現metastore_db資料夾(derby資料庫)
# 如果hive出現什麼錯誤,則可以把metastore_db資料夾刪除,然後重新初始化
hive
# 注意:需在之前啟動hadoop集群,hive是依賴hadoop的
hive> show databases;
# 使用預設資料庫
hive> use default;
hive> show tables;
hive> create table wordcount (line string);
hive> desc wordcount;
# hive的臨時檔案
hive> dfs -ls /tmp/hive/root;
# hive的真實資料
hive> dfs -ls /user/hive/warehouse/wordcount;
# 載入資料,hdfs的根目錄下的input.txt檔案,覆蓋到hive表wordcount中
hive> load data inpath '/input.txt' overwrite into table wordcount;
# 注意:真正的資料並沒有寫入到hive中,而是與hdfs中的資料建立了一種對映,我們就可以通過表,去訪問檔案了
hive> select * from wordcount;
# 將line欄位按空格分隔為陣列
hive> select split(line, ' ') from wordcount;
# 將陣列拆分為新的單獨字段
hive> select explode(split(line, ' ')) as word from wordcount;
# 將上個命令的結果當成新錶然後group by
hive> select word,count(1) from (select explode(split(line, ' ')) as word from wordcount)w group by word;
# hql會把此命令翻譯為mapreduce的job
2、日誌檔案格式化為1,2,3,6列用逗號分隔的sougou.dic檔案
3、把sougou.dic檔案放到hdfs中
[root@sunsk01 src]# hadoop fs -mkdir /sougou/
[root@sunsk01 src]# hadoop fs -put sougou.dic /sougou/
4、建表,對映到sougou.dic檔案上
hive> create table sgr (qtime string, qid string, qword string, url string) row format delimited fields terminated by ',';
# 建立一張hive表,該行記錄字段之間用逗號分隔。
hive> load data inpath '/sougou/' overwrite into table sgr;
# 檢測對映是否成功
hive> select count(1) from sgr;
5、查詢熱搜榜
hive> select keyword,count(1) c from (select qword as keyword from sgr) kw group by keyword order by c desc limit 10;
# 結果:
# ok
# [汶川**原因] 335
# [哄搶救災物資] 308
# [**莎朗斯通] 110
# [印尼排華是怎麼回事] 77
# [朝鮮能不能打敗南韓] 60
# [楊丞琳辱華慘痛下場] 48
# [印尼殘害女華人+] 47
# [xiao77] 34
# [gay] 31
# [97sese] 30
# time taken: 66.374 seconds, fetched: 10 row(s)
# emmm... 知道大家都在搜狗搜什麼了。。。
hive hql文件 HIVE說明文件
sql 查詢功能,可以將sql 語句轉換為 mapreduce 任務進行執行,通過自己的 sql去查詢分析需要的內容,這套 sql簡稱 hive sql,使不熟悉 mapreduce 的使用者很 方便的利用 sql語言查詢,彙總,分析資料。hive 適用性 它與關係型資料庫的 sql略有不同,但支援...
mysql安裝文件 mysql安裝文件
linux下使用yum安裝mysql 安裝的mysql版本為mysql55 mysql server.x86 64 1 安裝 檢視有沒有安裝過 yum list installed mysql rpm qa grep mysql 檢視有沒有安裝包 yum list mysql 安裝mysql客戶端 ...
Hive安裝手冊
一 安裝準備 2 jdk版本 jdk 6u20 linux i586.bin 3 作業系統 linux s132 2.6.9 78.8axs2smp 1 smp tue dec 16 02 42 55 est 2008 x86 64 x86 64 x86 64 gnu linux 4 預設前提是安裝...