2014-10-28 80 views
0

假設我有大約10-20GB的HDFS數據作爲Hive表。這是在幾個Map-Reduce作業之後獲得的,並通過兩個單獨的數據集進行聯接。我需要讓這個Queryable給用戶。我有什麼選擇?查詢Hive處理的大量數據

  1. 使用Sqoop將數據從HDFS傳輸到像Postgresql這樣的RDS。但我想避免在數據傳輸上花費太多時間。我只是使用Sqoop在同一AWS區域測試HDFS-> RDS,而800mb的數據需要4-8分鐘。所以你可以想象〜60GB的數據會非常難以管理。這將是我最後的手段。
  2. 根據用戶請求直接從Web服務器查詢Hive。我從來沒有像這樣使用Hive的頭,所以我對此持懷疑態度。這讓我感到震驚,因爲我發現你可以在EMR集羣上進行一些端口轉發之後遠程查詢配置單元表。但是對於大數據我是不太清楚與此相關的風險。這樣做常見嗎?
  3. 其他一些解決方案 - 人們通常如何做這種事情?看起來像一個很常見的任務。

只是爲了完整性的緣故,我的數據是這樣的:

id  time    cat1 cat2 cat3 metrics[200] 
A123 1234212133  12  ABC  24  4,55,231,34,556,123....(~200) 
. 
. 
. 

(時間是劃時代)

我的查詢是這樣的:

select cat1, corr(metrics[2],metrics[3]),corr(metrics[2],metrics[4]),corr(metrics[2],metrics[5]),corr(metrics[2],metrics[6]) from tablename group by cat1;

需要的相關函數,這就是爲什麼我選擇了cho在MySQL上使用postgresql。

回答

0

你在Hive相關函數:

更正件(COL1,COL2)

返回組中的一對數字列的相關性的Pearson相關係數。

+0

是的我意識到這一點,但我主要想知道是否使用像這樣的Hive是好的做法或不... – user1265125 2014-10-28 19:30:36

0

您可以通過odbc簡單地連接到hiveserver端口並執行查詢。 下面是一個例子: http://www.cloudera.com/content/cloudera/en/downloads/connectors/hive/odbc/hive-odbc-v2-5-10.html

+0

我意識到這是可能的,但它是好的做法?我從來沒有聽說過像這樣使用Hive。 – user1265125 2014-10-28 19:29:52

+0

當然。我認爲這是Hive使用的主要方式。 Hive應該暴露給用戶和機器,以便從遠程服務器執行ETL和分析等等。用戶通常通過Hue或任何支持ODBC和JDBC的查詢軟件(如DBVisualizer)來訪問它。此外,使用JDBC可以從Java訪問它並創建在配置單元上實現ETL作業的軟件。以上所有都很常見。 – dimamah 2014-10-29 06:40:13

+0

看看這個:https://cwiki.apache.org/confluence/display/Hive/Tutorial#Tutorial-WhatHiveIsNOT。 Hive並非專爲在線交易處理而設計,並且不提供實時查詢。思考? – user1265125 2014-10-29 08:19:13

0

蜂房用戶體驗(色調)具有專門用於暴露蜂房結束誰是舒服SQL用戶的目的設計的蜂蠟查詢編輯器。通過這種方式,他們可以針對駐留在Hive中的數據運行即席查詢,而無需將其移至別處。你可以在這裏看到一個蜂蠟查詢編輯器的例子:http://demo.gethue.com/beeswax/#query

這會適合你嗎?

0

我可以從上面發佈的問題了解到,你有一些數據(20GB),你已經存儲在hdfs中並使用配置單元。現在你想訪問這些數據來執行一些統計功能,比如相關性和其他功能。

  • 您在配置單元中執行相關性的函數。
  • 否則,您可以直接使用RHive將R連接到配置單元,甚至可以使用數據源配置爲使用數據源。
  • 另一種解決方案是安裝hue,它可以與配置單元編輯器一起提供,您可以直接查詢配置單元。