13

Hive が実行されている Hadoop クラスターを使用するソリューションに取り組んでおり、.NET アプリケーションからジョブとハイブ クエリを送信して処理し、完了時に通知を受け取りたいと考えています。Java アプリケーションから直接アクセスする以外に、Hadoop とやり取りするための解決策が見つかりません。アクセスできる API はありますか?

4

7 に答える 7

10

どうやら Java 以外のソリューションを使用して Hadoop に接続することは可能です - Do I have to write my application in Java? を参照してください。

于 2010-08-17T11:49:34.933 に答える
9

Hadoop の場合: Hadoop 通信層は Java のみで動作し、クロス プラットフォームではないため、C# から直接接続する方法はありません。それはおそらく可能ですが、非常に重要な方法です。Hadoop の Protocol Buffers サポートを追加するパッチがあることは知っていますが、執筆時点 (2011 年 8 月) ではまだリリースされていません。

Hive には C# をサポートする Thrift インターフェースがあるため、Hive を使用すると状況が良くなります。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 免責事項: 私は著者です。

于 2011-08-19T23:13:24.967 に答える
7
  1. Hortonworks ODBC ドライバーがあります。個人的には使用していませんが、他の ODBC データソースと同様にハイブを操作できるようになります。ODBC ドライバーがインストールされると、OdbcConnection クラスを使用して Hive に接続できます。

  2. 他の回答で述べたように、Thrift API を使用できます。そのためには、Hive ソース リポジトリからダウンロードできるインターフェイス定義ファイルから C# クラスを生成する必要があります。このアプローチは私にとってはうまくいきます。

  3. IKVM を使用して、Hadoop クライアント Java ライブラリを C# から使用できる .Net アセンブリに変換できます。Hive クライアントで IKVM を使用したことはありませんが、他の Hadoop クライアント ライブラリを IKVM で使用したことがありますが、驚くほどうまくいきました。

編集:

  1. Rest インターフェイスを使用して Hive ジョブ (Pig および MR も) を送信できる Apache Templeton もあります。問題は、別のマップ タスクを生成して Hive ジョブを送信することで、処理が遅くなることです。
于 2012-12-07T23:41:17.090 に答える
4

Microsoft社のODBCコネクタを利用することで、C#を利用したHiveへのアクセスが可能です。" Microsoft.Hadoop.Hive "の Nuget パッケージをダウンロードし、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 で新しい接続を追加してから、接続文字列を作成します。これを行うには、次の手順を使用しました。

  • データ ソースを "Microsoft ODBC Data Source" に変更し、".NET Framework Data Provider for ODBC" をデータ プロバイダーとして使用していることを確認します。

[データ ソースの変更] ダイアログ ウィンドウ

  • 「データ ソースの指定」の部分で、「接続文字列を使用する」にチェックを入れ、「ビルド」ボタンをクリックします。

接続ダイアログウィンドウの追加

  • [Machine Data Source] タブで、[Sample Microsoft Hive DSN] データ ソース名を選択し、[OK] ボタンをクリックします。

[データ ソースの選択] ダイアログ ウィンドウ

  • 「Microsoft Hive ODBC Driver Connection Dialog」というタイトルのウィンドウが開きます。オプションの説明を入力してから、Hive サーバーへのパス、使用するポート、接続先のデータベースを入力します。Hive サーバーの種類を指定し、使用する認証メカニズムを指定してから、適切なフィールドに入力します。

Microsoft Hive ODBC ドライバー接続ダイアログ ウィンドウ

  • 最後に、下部にある [テスト] ボタンをクリックして、正常に接続できることを確認します。成功した場合は、[OK] ボタンをクリックすると、[接続の変更] ウィンドウに戻ります。Hive サービスのログイン情報をここに入力します。

このデータ ソースを利用するか、作成された接続文字列をコピーしてアプリケーション内で使用します。

于 2015-01-12T02:19:10.490 に答える
3

Thrift API は、他の言語が hdfs とハイブにアクセスするためのもう 1 つの方法でもあります

于 2010-08-20T03:41:31.177 に答える
1

これが役立つかどうかを確認してください。C#経由でHadoopに接続しようとしました

.NET/C# を使用して Hive 経由で Hadoop と通信する方法

于 2014-03-04T15:34:21.030 に答える