我正在开发一个解决方案,我将有一个运行Hive的Hadoop集群,我希望从.NET应用程序发送作业和配置单元查询以进行处理,并在完成后收到通知。除了直接从Java应用程序以外,我找不到任何与Hadoop接口的解决方案,是否有我可以访问的API,我只是没有找到?
答案 0 :(得分:10)
显然可以使用非Java解决方案连接到Hadoop - 请参阅Do I have to write my application in Java?
答案 1 :(得分:8)
使用Hadoop:没有直接的方式从C#连接,因为Hadoop通信层只与Java一起使用,而不是跨平台。它可能是非常不平凡的。 我知道有一个补丁可以为Hadoop添加Protocol Buffers支持,但是在撰写本文时(2011年8月)还没有发布。
Hive的情况比较好,因为Hive有Thrift接口支持C#。您可以自己下载Hive Thrift界面并生成C#客户端,但要注意它需要对生成的代码进行一些黑客攻击。相反,我建议您从https://bitbucket.org/vadim/hive-sharp/downloads/hive-sharp-lib.dll下载dll或使用Nuget包管理器,搜索“hive”:http://nuget.org/List/Packages/Hive.Sharp.Lib 免责声明:我是作者。
答案 2 :(得分:7)
有Hortonworks ODBC驱动程序。我没有亲自使用它,但它可以让你像任何其他ODBC数据源一样使用配置单元。安装ODBC驱动程序后,可以使用OdbcConnection类连接到Hive。
如其他答案所述 - 您可以使用Thrift api。为此,您需要从接口定义文件生成C#类,您可以从Hive源存储库下载它们。这种方法对我有用。
您可以使用IKVM将hadoop客户端java库转换为可以从C#中使用的.Net程序集。我没有将IKVM与Hive客户端一起使用,但我已经对其他一些hadoop客户端库进行了IKVM,并且令人惊讶的是它有效。
修改强>
答案 3 :(得分:3)
Thrift API也是其他语言访问hdfs和hive的另一种方式
答案 4 :(得分:3)
可以通过使用Microsoft的ODBC连接器来利用C#访问Hive。下载Nuget软件包,用于" Microsoft.Hadoop.Hive "并按照http://msdn.microsoft.com/en-us/library/dn749834.aspx
提供的示例进行操作诀窍在于构建连接字符串以与其连接。我想出的最好方法是下载Microsoft Hive ODBC驱动程序(http://www.microsoft.com/en-us/download/details.aspx?id=40886),安装它,然后使用Visual Studio内部的服务器资源管理器添加新连接,然后为我构建连接字符串。为此,我使用了以下步骤:
使用此数据源或复制它为您构建的连接字符串,并在您的应用程序中使用它。
答案 5 :(得分:1)
看看这是否有帮助。我试图通过C#
连接到Hadoop答案 6 :(得分:0)
使用https://hbasenet.codeplex.com/
中的Hbase.Net库然后你可以连接到hbase / hive,如下所示:
Client c = new Client("10.20.14.179", 9090, 1000000);
var cli = c.TotalClients;
var tableList = c.GetTableNames();
仅供参考,我们正在使用hortonworks沙箱并且连接正常。
在上面的示例中,10.20.14.179是主机,9090是端口。
另外,以下内容可能有助https://community.hortonworks.com/questions/25101/is-there-a-way-to-connect-to-hbase-using-c.html
没有本机C#HBase客户端。但是,有几种方法可以与C#中的HBase进行交互。
C#HBase Thrift客户端 - Thrift允许定义服务端点 和通用格式的数据模型,并使用代码生成器 创建特定于语言的绑定。 HBase提供了Thirft服务器和 定义。在线创建C#HBase有很多例子 节俭客户端。
Marlin - Marlin是一个C#客户端,用于与Stargate(HBase REST API)最终成为hbase-sdk-for-net。我还没有 亲自测试了这个针对HBase 1.x +,但考虑到它使用 星际之门,我希望它应该有效。如果您打算使用 星际之门并实施您自己的客户,我建议您这样做 Thrift,请确保使用protobufs来避免JSON序列化 高架。使用基于HTTP的方法也使得它更容易 通过多个网关负载均衡请求。
Phoenix Query Server - Phoenix是HBase上的SQL皮肤。凤凰查询 Server是一个REST API,用于向Phoenix提交SQL查询。这是 一些示例代码,但是,我还没有测试过它。
Simba HBase ODBC驱动程序 - 使用ODBC连接到HBase。我听说 这种方法的积极反馈,特别是来自像这样的工具 画面。这不是开源的,需要购买许可证。