Hive が実行されている Hadoop クラスターを使用するソリューションに取り組んでおり、.NET アプリケーションからジョブとハイブ クエリを送信して処理し、完了時に通知を受け取りたいと考えています。Java アプリケーションから直接アクセスする以外に、Hadoop とやり取りするための解決策が見つかりません。アクセスできる API はありますか?
7 に答える
どうやら Java 以外のソリューションを使用して Hadoop に接続することは可能です - Do I have to write my application in Java? を参照してください。
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 免責事項: 私は著者です。
Hortonworks ODBC ドライバーがあります。個人的には使用していませんが、他の ODBC データソースと同様にハイブを操作できるようになります。ODBC ドライバーがインストールされると、OdbcConnection クラスを使用して Hive に接続できます。
他の回答で述べたように、Thrift API を使用できます。そのためには、Hive ソース リポジトリからダウンロードできるインターフェイス定義ファイルから C# クラスを生成する必要があります。このアプローチは私にとってはうまくいきます。
IKVM を使用して、Hadoop クライアント Java ライブラリを C# から使用できる .Net アセンブリに変換できます。Hive クライアントで IKVM を使用したことはありませんが、他の Hadoop クライアント ライブラリを IKVM で使用したことがありますが、驚くほどうまくいきました。
編集:
- Rest インターフェイスを使用して Hive ジョブ (Pig および MR も) を送信できる Apache Templeton もあります。問題は、別のマップ タスクを生成して Hive ジョブを送信することで、処理が遅くなることです。
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 サーバーの種類を指定し、使用する認証メカニズムを指定してから、適切なフィールドに入力します。
- 最後に、下部にある [テスト] ボタンをクリックして、正常に接続できることを確認します。成功した場合は、[OK] ボタンをクリックすると、[接続の変更] ウィンドウに戻ります。Hive サービスのログイン情報をここに入力します。
このデータ ソースを利用するか、作成された接続文字列をコピーしてアプリケーション内で使用します。
Thrift API は、他の言語が hdfs とハイブにアクセスするためのもう 1 つの方法でもあります
これが役立つかどうかを確認してください。C#経由でHadoopに接続しようとしました