如何从.NET连接到Hadoop/Hive

Jam*_*ery 13 c# hadoop hive

我正在开发一个解决方案,我将有一个运行Hive的Hadoop集群,我想从.NET应用程序发送作业和配置单元查询以进行处理,并在完成后收到通知.除了直接从Java应用程序以外,我找不到任何与Hadoop接口的解决方案,是否有我可以访问的API,我只是没有找到?

Mat*_*rty 10

显然可以使用非Java解决方案连接到Hadoop - 请参阅我是否必须使用Java编写应用程序?


Vad*_*kan 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 免责声明:我是作者.


Ser*_*zin 7

  1. 有Hortonworks ODBC驱动程序.我没有亲自使用它,但它可以让你像任何其他ODBC数据源一样使用配置单元.安装ODBC驱动程序后,可以使用OdbcConnection类连接到Hive.

  2. 如其他答案所述 - 您可以使用Thrift api.为此,您需要从接口定义文件生成C#类,您可以从Hive源存储库下载它们.这种方法对我有用.

  3. 您可以使用IKVM将hadoop客户端Java库转换为可以从C#中使用的.Net程序集.我没有将IKVM与Hive客户端一起使用,但我已经对其他一些hadoop客户端库进行了IKVM,并且令人惊讶的是它有效.

编辑:

  1. 还有Apache templeton,它允许使用Rest接口提交Hive作业(Pig和MR).它的问题是它产生了另一个map任务来提交Hive作业,这使得它变慢.