RHive

来源:http://www.cnblogs.com/RHadoop-Hive/archive/2017/04/27/6776351.html
-Advertisement-
Play Games

R + Hive = RHive 支持原創:http://blog.fens.me/nosql-r-hive/ R利劍NoSQL系列文章 之 Hive Hive介紹 Hive安裝 RHive安裝 RHive函數庫 RHive基本使用操作 1. Hive介紹 Hive是建立在Hadoop上的數據倉庫基 ...


R + Hive = RHive

支持原創:http://blog.fens.me/nosql-r-hive/

R利劍NoSQL系列文章 之 Hive

rhive

  1. Hive介紹
  2. Hive安裝
  3. RHive安裝
  4. RHive函數庫
  5. RHive基本使用操作

1. Hive介紹

Hive是建立在Hadoop上的數據倉庫基礎構架。它提供了一系列的工具,可以用來進行數據提取轉化載入(ETL),這是一種可以存儲、查詢和分析存儲在 Hadoop 中的大規模數據的機制。Hive 定義了簡單的類 SQL 查詢語言,稱為 HQL,它允許熟悉 SQL 的用戶查詢數據。同時,這個語言也允許熟悉 MapReduce 開發者的開發自定義的 mapper 和 reducer 來處理內建的 mapper 和 reducer 無法完成的複雜的分析工作。

Hive 沒有專門的數據格式。 Hive 可以很好的工作在 Thrift 之上,控制分隔符,也允許用戶指定數據格式

上面內容摘自 百度百科(http://baike.baidu.com/view/699292.htm)

hive與關係資料庫的區別:

  • 數據存儲不同:hive基於hadoop的HDFS,關係資料庫則基於本地文件系統
  • 計算模型不同:hive基於hadoop的mapreduce,關係資料庫則基於索引的記憶體計算模型
  • 應用場景不同:hive是OLAP數據倉庫系統提供海量數據查詢的,實時性很差;關係資料庫是OLTP事務系統,為實時查詢業務服務
  • 擴展性不同:hive基於hadoop很容易通過分散式增加存儲能力和計算能力,關係資料庫水平擴展很難,要不斷增加單機的性能

2. Hive安裝

Hive是基於Hadoop開發的數據倉庫產品,所以首先我們要先有Hadoop的環境。

rhive

Hadoop安裝,請參考:Hadoop環境搭建創建Hadoop母體虛擬機

 

Hive的安裝,請參考:Hive安裝及使用攻略

Hadoop-1.0.3的下載地址
http://archive.apache.org/dist/hadoop/core/hadoop-1.0.3/

Hive-0.9.0的下載地址
http://archive.apache.org/dist/hive/hive-0.9.0/

 

Hive安裝好後
啟動hiveserver的服務

~ nohup hive --service hiveserver  &
Starting Hive Thrift Server

打開hive shell

~ hive shell
Logging initialized using configuration in file:/home/conan/hadoop/hive-0.9.0/conf/hive-log4j.proper             ties
Hive history file=/tmp/conan/hive_job_log_conan_201306261459_153868095.txt

#查看hive的表
hive> show tables;
hive_algo_t_account
o_account
r_t_account
Time taken: 2.12 seconds

#查看o_account表的數據
hive> select * from o_account;
1       [email protected]     2013-04-22 12:21:39
2       [email protected]   2013-04-22 12:21:39
3       [email protected]  2013-04-22 12:21:39
4       [email protected]     2013-04-22 12:21:39
5       [email protected]    2013-04-22 12:21:39
6       [email protected]    2013-04-22 12:21:39
7       [email protected]  2013-04-23 09:21:24
8       [email protected] 2013-04-23 09:21:24
9       [email protected]   2013-04-23 09:21:24
10      [email protected] 2013-04-23 09:21:24
11      [email protected]  2013-04-23 09:21:24
Time taken: 0.469 seconds

3. RHive安裝

請提前配置好JAVA的環境:

~ java -version
java version "1.6.0_29"
Java(TM) SE Runtime Environment (build 1.6.0_29-b11)
Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02, mixed mode)

安裝R:Ubuntu 12.04,請更新源再下載R2.15.3版本

~ sudo sh -c "echo deb http://mirror.bjtu.edu.cn/cran/bin/linux/ubuntu precise/ >>/etc/apt/sources.list"
~ sudo apt-get update
~ sudo apt-get install r-base-core=2.15.3-1precise0precise1

安裝R依賴庫:rjava

#配置rJava
~ sudo R CMD javareconf

#啟動R程式
~ sudo R
install.packages("rJava")



安裝RHive
install.packages("RHive")
library(RHive)
Loading required package: rJava
Loading required package: Rserve
This is RHive 0.0-7. For overview type ‘?RHive’.
HIVE_HOME=/home/conan/hadoop/hive-0.9.0
call rhive.init() because HIVE_HOME is set.

由於RHive已經從CRAN上移除,需要動手下載安裝,下載地址:https://cran.r-project.org/src/contrib/Archive/RHive/。我們需要動手下載RHive_0.0-7.tar.gz包,然後通過命令進行安裝。


# 安裝RHive
~ R CMD INSTALL RHive_0.0-7.tar.gz

4. RHive函數庫

rhive.aggregate        rhive.connect          rhive.hdfs.exists      rhive.mapapply
rhive.assign           rhive.desc.table       rhive.hdfs.get         rhive.mrapply
rhive.basic.by         rhive.drop.table       rhive.hdfs.info        rhive.napply
rhive.basic.cut        rhive.env              rhive.hdfs.ls          rhive.query
rhive.basic.cut2       rhive.exist.table      rhive.hdfs.mkdirs      rhive.reduceapply
rhive.basic.merge      rhive.export           rhive.hdfs.put         rhive.rm
rhive.basic.mode       rhive.exportAll        rhive.hdfs.rename      rhive.sapply
rhive.basic.range      rhive.hdfs.cat         rhive.hdfs.rm          rhive.save
rhive.basic.scale      rhive.hdfs.chgrp       rhive.hdfs.tail        rhive.script.export
rhive.basic.t.test     rhive.hdfs.chmod       rhive.init             rhive.script.unexport
rhive.basic.xtabs      rhive.hdfs.chown       rhive.list.tables      
rhive.size.table
rhive.big.query        rhive.hdfs.close       rhive.load             rhive.write.table
rhive.block.sample     rhive.hdfs.connect     rhive.load.table
rhive.close            rhive.hdfs.du          rhive.load.table2

Hive和RHive的基本操作對比:


#連接到hive
Hive:  hive shell
RHive: rhive.connect("192.168.1.210")

#列出所有hive的表
Hive:  show tables;
RHive: rhive.list.tables()

#查看表結構
Hive:  desc o_account;
RHive: rhive.desc.table('o_account'), rhive.desc.table('o_account',TRUE)

#執行HQL查詢
Hive:  select * from o_account;
RHive: rhive.query('select * from o_account')

#查看hdfs目錄
Hive:  dfs -ls /;
RHive: rhive.hdfs.ls()

#查看hdfs文件內容
Hive:  dfs -cat /user/hive/warehouse/o_account/part-m-00000;
RHive: rhive.hdfs.cat('/user/hive/warehouse/o_account/part-m-00000')

#斷開連接
Hive:  quit;
RHive: rhive.close()

5. RHive基本使用操作

#初始化
rhive.init()

#連接hive
rhive.connect("192.168.1.210")

#查看所有表
rhive.list.tables()
             tab_name
1 hive_algo_t_account
2           o_account
3         r_t_account

#查看表結構
rhive.desc.table('o_account');
     col_name data_type comment
1          id       int
2       email    string
3 create_date    string

#執行HQL查詢
rhive.query("select * from o_account");
   id           email         create_date
1   1     [email protected] 2013-04-22 12:21:39
2   2   [email protected] 2013-04-22 12:21:39
3   3  [email protected] 2013-04-22 12:21:39
4   4     [email protected] 2013-04-22 12:21:39
5   5    [email protected] 2013-04-22 12:21:39
6   6    [email protected] 2013-04-22 12:21:39
7   7  [email protected] 2013-04-23 09:21:24
8   8 [email protected] 2013-04-23 09:21:24
9   9   [email protected] 2013-04-23 09:21:24
10 10 [email protected] 2013-04-23 09:21:24
11 11  [email protected] 2013-04-23 09:21:24

#關閉連接
rhive.close()
[1] TRUE

創建臨時表


rhive.block.sample('o_account', subset="id<5")
[1] "rhive_sblk_1372238856"

rhive.query("select * from rhive_sblk_1372238856");
  id          email         create_date
1  1    [email protected] 2013-04-22 12:21:39
2  2  [email protected] 2013-04-22 12:21:39
3  3 [email protected] 2013-04-22 12:21:39
4  4    [email protected] 2013-04-22 12:21:39

#查看hdfs的文件
rhive.hdfs.ls('/user/hive/warehouse/rhive_sblk_1372238856/')
  permission owner      group length      modify-time
1  rw-r--r-- conan supergroup    141 2013-06-26 17:28
                                                 file
1 /user/hive/warehouse/rhive_sblk_1372238856/000000_0

rhive.hdfs.cat('/user/hive/warehouse/rhive_sblk_1372238856/000000_0')
[email protected] 12:21:39
[email protected] 12:21:39
[email protected] 12:21:39
[email protected] 12:21:39

按範圍分割欄位數據


rhive.basic.cut('o_account','id',breaks='0:100:3')
[1] "rhive_result_20130626173626"
attr(,"result:size")
[1] 443

rhive.query("select * from rhive_result_20130626173626");
             email         create_date     id
1      [email protected] 2013-04-22 12:21:39  (0,3]
2    [email protected] 2013-04-22 12:21:39  (0,3]
3   [email protected] 2013-04-22 12:21:39  (0,3]
4      [email protected] 2013-04-22 12:21:39  (3,6]
5     [email protected] 2013-04-22 12:21:39  (3,6]
6     [email protected] 2013-04-22 12:21:39  (3,6]
7   [email protected] 2013-04-23 09:21:24  (6,9]
8  [email protected] 2013-04-23 09:21:24  (6,9]
9    [email protected] 2013-04-23 09:21:24  (6,9]
10 [email protected] 2013-04-23 09:21:24 (9,12]
11  [email protected] 2013-04-23 09:21:24 (9,12]

Hive操作HDFS


#查看hdfs文件目錄
rhive.hdfs.ls()
  permission owner      group length      modify-time   file
1  rwxr-xr-x conan supergroup      0 2013-04-24 01:52 /hbase
2  rwxr-xr-x conan supergroup      0 2013-06-23 10:59  /home
3  rwxr-xr-x conan supergroup      0 2013-06-26 11:18 /rhive
4  rwxr-xr-x conan supergroup      0 2013-06-23 13:27   /tmp
5  rwxr-xr-x conan supergroup      0 2013-04-24 19:28  /user

#查看hdfs文件內容
rhive.hdfs.cat('/user/hive/warehouse/o_account/part-m-00000')
[email protected] 12:21:39
[email protected] 12:21:39
[email protected] 12:21:39

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. 刪除所有MySQL中的用戶(包括root用戶): root可以保留,然後修改為其他用戶 2. 為管理員root用戶設置密碼 : A、為沒有密碼的用戶設置密碼: B、MySQL多實例設置密碼需要指定mysql.sock文件: C、新版本的mysql可能在第一次啟動以後會生成一個隨機密碼: D、直 ...
  • Data privacy is a major concern today for any organization that manages sensitive data or personally identifiable information (PII). Examples of such ...
  • 之前就想要把一些 SQL 的常用函數記錄下來,不過一直沒有實行。。。嘿嘿。。。 直到今天用到substring()這個函數,C# 裡面這個方法起始值是 0,而 SQL 裡面起始值是 1。傻傻分不清楚。。。 這篇博客作為記錄 SQL 的函數的使用方法,想到哪裡用到哪裡就寫到哪裡。。。 SubStrin ...
  • 公用表表達式簡介: 公用表表達式 (CTE) 可以認為是在單個 SELECT、INSERT、UPDATE、DELETE 或 CREATE VIEW 語句的執行範圍內定義的臨時結果集。CTE 與派生表類似,具體表現在不存儲為對象,並且只在查詢期間有效。與派生表的不同之處在於,公用表表達式 (CTE) ...
  • 資料庫恢復失敗,原來的數據卻變成了 當嘗試打開資料庫的屬性,即出現上面圖片異常的信息。正常來說,是可以打開資料庫的屬性 此刻,你可以運行SQL語句來解決: USE master; GO ALTER DATABASE [Tutorial] SET SINGLE_USER WITH ROLLBACK I ...
  • 用EXISTS替代IN用NOT EXISTS替代NOT IN用表連接[left、right、inner]查詢替換EXISTS ...
  • 沒有偶然的運氣,只有不斷的努力! There is no accidental luck, only constant efforts! 首先 新聞發佈會結合了JSP里的Servlet和request對象,response對象還有使用session對象和cookie對象。 -登錄頁面 package ...
  • 【註】關閉window的防火牆 1. 安裝開發hadoop插件 將hadoop安裝包hadoop-eclipse-plugin-2.7.3拷貝到eclipse的插件目錄plugins下。 插件百度雲地址:http://pan.baidu.com/s/1dEXywz3 重啟eclipse,打開wind ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...