使用 Hive 構建資料倉儲:省錢的資料倉儲

來源:互聯網
上載者:User

有 3 個傢伙來到了一家企業。第一個(資料倉儲)身材魁梧:他帶來了曆史和經驗,而且能言會道,所說的大部分話都是真的。但是,在許多方面,它有些自我膨脹,在另一些方面又有些鋪張浪費,而且人們厭煩了各種結果的代價。Apache Hadoop 進入了同一棟建築,聲稱要接管整個市場。他大肆鼓吹大資料、速度、資料量、種類以及一堆 v 開頭的詞彙,這些詞彙在市場營銷計劃之外沒有多大意義。他漫不經心地說著分析、預測等等。而且他要價很低。於是人們開始停下來傾聽。

Apache Hive 在屋外徘徊,他沒有打算和其他人爭論。他希望與 Hadoop 合作,但不同於 Hadoop,他不希望將資料倉儲拋在路邊。Hive 擁有資料倉儲功能,但在商業智慧 (BI) 和分析上有一些限制。它具有資料庫的潛力,但也具有關聯式資料庫管理系統 (RDBMS) 和結構化查詢語言 (SQL) (SQL) 方面的限制。它更加開放和誠實。它與資料倉儲密切相關,與 RDBMS 也密切相關。但它從未站出來聲稱它並不像初看起來那麼簡單。Hadoop 打斷了談話,聲稱它是 Hadoop 領域的資料倉儲。Hadoop 似乎讓出了最優秀營銷公關代表的地位,在一次簡單的對話之後,結果變成了是 Hive 和 Hadoop 在拯救世界。這種描述很吸引人,也很有趣。但它是真的嗎? 有幾分相似。

資料倉儲

構建一個真正的資料倉儲可能是一個龐大的工程。有許多不同的裝置、方法和理論。最大的共同價值是什嗎?事實是什麼,哪些主題與這些事實相關?以及您如何混合、匹配、合并和整合可能已存在數十年的系統與僅在幾個月前實現的系統?這還是在大資料和 Hadoop 之前。將非結構化、資料、NoSQL 和 Hadoop 添加到組合中,您很快就會得到一個龐大的Data Integration項目。

描述一個資料倉儲的最簡單方式是,認識到可以將它歸結為星形模式、事實和維度。您如何建立這些元素,決定權在您手上 — 通過暫存資料庫;動態提取、轉換、載入流程;或者整合輔助索引。當然,您可以構建一個包含星形模式、事實和維度資料倉儲,使用 Hive 作為核心技術,但這並不容易。在 Hadoop 世界外部,這會成為一個更大的挑戰。與其說 Hive 是一種合法的資料倉儲,倒不如說它是一個整合、轉換、快速尋找工具。該模式可能像是資料倉儲,但適用性表明它不是 RDBMS。那麼為什麼使用它?

星形模式是什麼

想象一顆星星 — 具有一個中心和多個指向不同方向的 “手臂”。中心是動力之源或事實表。所有手臂都指向不同維度。許多資料倉儲有一個事實表和多個維度。

事實表包含您可以加權或計算的任何資料。在此樣本中,您擁有棒球統計資料,比如跑壘、全壘打、擊球率等。您可以計算、增加、減去或乘以這些列。

維度更加以主題為基礎。在此樣本中,您有運動員資訊維度、時間和日期維度,等等。通常沒有計算或加權多個維度中的列。

在此樣本中,將一個維度資料表與一個事實表串連的鍵是 playerID。

簡單來講,有時您需要使用擺在面前的工具。

任何從事過一段時間的 IT 工作的人都可能告訴您,適合一項工作的正確工具並不總是能夠用到。或者,正確的工具雖然用得到,但為了削減成本會阻礙使用該工具。有時企業政治學發揮著重大作用。無論什麼原因,我們大部分人在很多情形下被迫使用可能並不是最適合其工作的工具來構建、設計和開發。

在我參與的許多項目中,我不得不使用 Hive 作為資料庫、作為資料倉儲以及作為緩慢變化的系統。這很有挑戰性,但偶爾會令人生厭。有時,您不得不搖頭並想知道為什麼。但在一天結束時,您仍然需要讓它工作。如果需要在 Hive 中構建和使用某個資料倉儲,而且需要使用緩慢變更維度和更新,並協調舊資料,那麼您必須這麼做。重點並不總是提供最佳的工具,而是建立最適合您工作的工具。

Hive

由於 Hive 的類 SQL 功能和類資料庫功能,它向非編程人員開放了大資料 Hadoop 生態系統。它常被描述為一個構建於 Hadoop 之上的資料倉儲基礎架構。這是一種部分真實的表述(因為您可將來源資料轉換為星形模式),但在建立事實表和維度資料表時,它更關乎設計而不是技術。

儘管如此,Hive 並不真正是一個資料倉儲。它甚至並不真正是一個資料庫。您可以使用 Hive 構建和設計一個資料倉儲,也可以使用 Hive 構建和設計資料庫表,但存在的一些限制需要提供許多解決辦法,並且將會帶來一些挑戰。

例如,索引在 Hive 中有一些限制。如何克服這個問題呢?您可以使用 org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler 函數在 Hive 中建立索引。Hive 和緩慢變更維度並不總是可能實現。但是如果構建暫存表和使用一定量的串連(而且計劃添加一個新表,轉儲舊錶,並且只保留最新、更新表用於比較),則可能實現它們。

串連到 Hive 的外部報告或分析系統是一個巨大的問題。甚至對於 JDBC 串連,也僅限於串連到預設資料庫。人們在尋求更多的經過改進的中繼資料,而且 Apache HCatalog 等工具正在協助將各種服務串連到 Hive 中繼存放區。在未來,如果利用得當,這可能是一個重大的增值地區。

所以,儘管 Hive 不是一個可靠的資料倉儲或資料庫,但仍然可以使用一些方法將 Hive 用作資料倉儲或資料庫。只是需要做一些工作和利用一些解決辦法將 Hive 打造成這樣的系統。為什麼您要再次經曆這一過程?因為您必須使用手頭的工具並讓它們發揮作用。

樣本:為棒球資訊構建一個資料倉儲

InfoSphere BigInsights Quick Start Edition

InfoSphere BigInsights Quick Start Edition 是 InfoSphere BigInsights(IBM 的基於 Hadoop 的產品)的一個免費的可下載版本。使用 Quick Start Edition,您可以嘗試使用 IBM 開發的特性來提高開源 Hadoop 的價值,比如 Big SQL、文本分析和 BigSheets。引導式學習可讓您的體驗儘可能地順暢,包括按部就班、自訂進度的教程和視頻,可協助您開始讓 Hadoop 為您所用。沒有時間或資料限制,您可以自行安排時間,在大量資料上實驗。請 觀看視頻、學習教程 (PDF) 和 下載 BigInsights  Quick Start Edition。

下面的棒球資料樣本展示了如何在 Hive 中使用來自 Sean Lahman 網站的棒球資料設計和構建一個資料倉儲。我很喜歡挑戰資料倉儲的反正常化 (denormalizing) 並從該資料構建一個資料倉儲。在 “使用 Hive 為資料構建一個庫” 中,我使用 VMware Fusion 在我的 Macbook 上建立了一個 IBM InfoSphere BigInsights 虛擬機器 (VM)。這是一個簡單測試,所以我的 VM 只有 1 GB RAM 和 20 GB 固態硬碟儲存空間。作業系統是 Linux 的 CentOS 6.4 64 位元發行版。

要開始使用此樣本,請下載 IBM InfoSphere BigInsights Basic Edition。您需要有一個 IBM Universal ID 或註冊擷取一個 ID,然後才能下載 InfoSphere BigInsights Basic Edition。

匯入資料

首先下載包含棒球和棒球運動員的統計資料的 CSV 檔案(參見 下載)。在 Linux 內建立一個目錄,然後運行:

$ Sudo mkdir /user/baseball.

sudo wget http://seanlahman.com/files/database/lahman2012-csv.zip

樣本包含 4 個主要表,每個表有一個惟一列(Master 表、Batting、Pitching 和 Fielding)以及多個次要表。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.