連接到蜂巢中的數(shù)據(jù)庫
介紹
在我開始告訴你我的問題之前,我已經(jīng)把某些與我的問題相關的術語寫下來了。所有的定義基本上都是維基百科的摘錄。
什么是大數(shù)據(jù)?
大數(shù)據(jù)是收集如此龐大和復雜的數(shù)據(jù)集的術語,因此很難使用手動數(shù)據(jù)庫管理工具或傳統(tǒng)數(shù)據(jù)處理應用程序進行處理。挑戰(zhàn)包括捕獲、策劃、存儲、搜索、共享、傳輸、分析和可視化。大數(shù)據(jù)很難與使用大多數(shù)關系數(shù)據(jù)庫管理系統(tǒng)以及桌面統(tǒng)計和可視化包配合使用,而是需要在數(shù)十臺、數(shù)百臺甚至數(shù)千臺服務器上運行大規(guī)模并行軟件。
什么是哈杜普?
哈多普是阿帕奇軟件基金會的開源框架。它成為存儲和處理大數(shù)據(jù)的解決方案。哈杜普由哈杜普通用包組成,該包提供文件系統(tǒng)和操作系統(tǒng)級別抽象、地圖還原引擎和哈杜普分布式文件系統(tǒng) (HDFS)。
什么是地圖減少?
MapReduce 是一種編程模型,用于處理大數(shù)據(jù)集,該數(shù)據(jù)集在聚類上具有并行分布式算法。地圖減少程序由:
Map() 程序執(zhí)行篩選和排序。
Reduce() 執(zhí)行摘要操作的程序。
什么是蜂巢?
Hive 是一個數(shù)據(jù)倉庫基礎設施,建在 Hadoop 之上,用于提供數(shù)據(jù)摘要、查詢和分析。
什么是蜂巢?
HiveQL 基于 SQL,但不嚴格遵循 SQL-92 標準。在內(nèi)部,編譯器將 HiveQL 陳述轉換為 MapReduce 工作的定向循環(huán)圖,并提交給 Hadoop 執(zhí)行。
我有什么問題?
我在尋找一個代碼片段,它可以通過H#通過HIVE連接到哈杜普。下面的討論將幫助您連接到 HIVE,并播放下面不同的表和數(shù)據(jù)。它還將為您提供一個地面,通過C#/NET探索哈杜普/HIVE。
背景
我搜索了任何地方在這方面, 但可以收集很少模糊的參考只從堆棧溢出或其他一些網(wǎng)站。我增加了限制, 我不能使用 Azure 高清。
使用代碼
首先,你需要下載微軟?蜂巢ODBC驅(qū)動程序??煞峙涞牟煌瑓?shù)及其值在本文的本節(jié)(附錄 C:驅(qū)動程序配置選項)中詳細解釋。
以下是設置連接弦的重要參數(shù)。其余參數(shù)可以根據(jù)應用程序的要求設置。
司機 [微軟蜂巢奧德布克司機]
主機+server_name
端口+10000
架構+默認
默認表=table_name
DRIVER={Microsoft Hive ODBC Driver} 是實際驅(qū)動程序的名稱。
Host=server_name 是哈杜普運行的服務器的名稱
Port=10000是默認端口,但您可以分配自己的端口。
Schema=default 是默認數(shù)據(jù)庫。您可以創(chuàng)建自己的。
DefaultTable=table_name 是HIVE系統(tǒng)中表的名稱。
功能連接到哈多普/HIVE使用微軟?蜂巢ODBC驅(qū)動器。GetDataFromHive()
SELECT * FROM table_name LIMIT 10 告訴數(shù)據(jù)庫以 SQL 服務器樣式從數(shù)據(jù)庫中攜帶 TOP (10) 記錄。
private void GetDataFromHive(){
var conn = new OdbcConnection
{
ConnectionString = @"DRIVER={Microsoft Hive ODBC Driver};
Host=server_name;
Port=10000;
Schema=default;
DefaultTable=table_name;
HiveServerType=1;
ApplySSPWithQueries=1;
AsyncExecPollInterval=100;
AuthMech=0;
CAIssuedCertNamesMismatch=0;
TrustedCerts=C:Program FilesMicrosoft Hive ODBC Driverlibcacerts.pem;"
};
try
{
conn.Open();
var adp = new OdbcDataAdapter("Select * from table_name limit 10", conn);
var ds = new DataSet();
adp.Fill(ds);
foreach (var table in ds.Tables)
{
var dataTable = table as DataTable;
if (dataTable == null)
continue;
var dataRows = dataTable.Rows;
if (dataRows == null)
continue;
//log.Info("Records found " + dataTable.Rows.Count);
foreach (var row in dataRows)
{
var dataRow = row as DataRow;
if (dataRow == null)
continue;
//log.Info(dataRow[0].ToString() + " " + dataRow[1].ToString());
}
}
}
catch (Exception ex)
{
// log.Info("Failed to connect to data source");
}
finally
{
conn.Close();
}
}
興趣點
隨著 SQL 服務器、甲骨文、Sybase 等傳統(tǒng)關系數(shù)據(jù)庫越來越難以以各種(結構/文檔樣式/非結構化等)格式處理大數(shù)據(jù)和數(shù)據(jù),BigData 正在大行其道。在這方面,哈多普正迅速成為大銀行和其他數(shù)據(jù)采礦行業(yè)所接受的解決方案之一。此代碼將幫助您與 Hadoop 交談,并加快您解決手頭問題的努力。
?
?
本文摘自 :https://blog.51cto.com/u