當前位置:首頁 > IT技術 > Web編程 > 正文

如何使用.NET/C通過hive與Hadoop連接
2021-09-13 10:36:21

連接到蜂巢中的數(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

開通會員,享受整站包年服務立即開通 >