如何使用.NET/C通过hive与Hadoop连接

Posted manor的大数据奋斗之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用.NET/C通过hive与Hadoop连接相关的知识,希望对你有一定的参考价值。

连接到蜂巢中的数据库
介绍
在我开始告诉你我的问题之前,我已经把某些与我的问题相关的术语写下来了。所有的定义基本上都是维基百科的摘录。

什么是大数据?
大数据是收集如此庞大和复杂的数据集的术语,因此很难使用手动数据库管理工具或传统数据处理应用程序进行处理。挑战包括捕获、策划、存储、搜索、共享、传输、分析和可视化。大数据很难与使用大多数关系数据库管理系统以及桌面统计和可视化包配合使用,而是需要在数十台、数百台甚至数千台服务器上运行大规模并行软件。

什么是哈杜普?
哈多普是阿帕奇软件基金会的开源框架。它成为存储和处理大数据的解决方案。哈杜普由哈杜普通用包组成,该包提供文件系统和操作系统级别抽象、地图还原引擎和哈杜普分布式文件系统 (HDFS)。

什么是地图减少?
MapReduce 是一种编程模型,用于处理大数据集,该数据集在聚类上具有并行分布式算法。地图减少程序由:

Map() 程序执行筛选和排序。
Reduce() 执行摘要操作的程序。
什么是蜂巢?
Hive 是一个数据仓库基础设施,建在 Hadoop 之上,用于提供数据摘要、查询和分析。

什么是蜂巢?
HiveQL 基于 SQL,但不严格遵循 SQL-92 标准。在内部,编译器将 HiveQL 陈述转换为 MapReduce 工作的定向循环图,并提交给 Hadoop 执行。

我有什么问题?
我在寻找一个代码片段,它可以通过H#通过HIVE连接到哈杜普。下面的讨论将帮助您连接到 HIVE,并播放下面不同的表和数据。它还将为您提供一个地面,通过C#/NET探索哈杜普/HIVE。

背景
我搜索了任何地方在这方面, 但可以收集很少模糊的参考只从堆栈溢出或其他一些网站。我增加了限制, 我不能使用 Azure 高清。

使用代码
首先,你需要下载微软®蜂巢ODBC驱动程序。可分配的不同参数及其值在本文的本节(附录 C:驱动程序配置选项)中详细解释。

以下是设置连接弦的重要参数。其余参数可以根据应用程序的要求设置。

司机 [微软蜂巢奥德布克司机]
主机+server_name
端口+10000
架构+默认
默认表=table_name
DRIVER={Microsoft Hive ODBC Driver} 是实际驱动程序的名称。

Host=server_name 是哈杜普运行的服务器的名称

Port=10000是默认端口,但您可以分配自己的端口。
Schema=default 是默认数据库。您可以创建自己的。

DefaultTable=table_name 是HIVE系统中表的名称。

功能连接到哈多普/HIVE使用微软®蜂巢ODBC驱动器。GetDataFromHive()

SELECT * FROM table_name LIMIT 10 告诉数据库以 SQL 服务器样式从数据库中携带 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 Files\\Microsoft Hive ODBC Driver\\lib\\cacerts.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 等传统关系数据库越来越难以以各种(结构/文档样式/非结构化等)格式处理大数据和数据,BigData 正在大行其道。在这方面,哈多普正迅速成为大银行和其他数据采矿行业所接受的解决方案之一。此代码将帮助您与 Hadoop 交谈,并加快您解决手头问题的努力。

原文链接:
https://www.codeproject.com/Tips/738141/How-to-Communicate-to-Hadoop-via-Hive-using-NET-Cs

以上是关于如何使用.NET/C通过hive与Hadoop连接的主要内容,如果未能解决你的问题,请参考以下文章

hive连接远程hadoop使用查询语句时,发生错误

为啥hive与mysql整合

Hadoop 之 Hive 安装与配置

java使用JDBC连接hive(使用beeline与hiveserver2)

连接到Hortonworks Hadoop / Hive

在 hadoop 中如何执行 hive 查询