問題タブ [elephantbird]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
hadoop - Elephant Bird から ProtobufPigLoader で読み取れるデータを書き込む
私のプロジェクトでは、約 2 TB のProtobufオブジェクトを分析したいと考えています。「象の鳥」ライブラリを介して、豚スクリプトでこれらのオブジェクトを使用したいと考えています。ただし、ファイルを HDFS に書き込んで ProtobufPigLoader クラスで使用できるようにする方法は完全には明らかではありません。
これは私が持っているものです:
豚のスクリプト:
インポート ツール (その一部):
インポート ツールは問題なく動作します。Hadoop-lzo 圧縮ライブラリを使用できないため、ProtobufPigLoader にいくつかの問題がありました。修正しないと (こちらを参照)、ProtobufPigLoader が機能しません。私が問題を抱えている問題は、DUMP raw_data;
returnUnable to open iterator for alias raw_data
とILLUSTRATE raw_data;
returnNo (valid) input data found!
です。
私にとっては、ProtobufBlockWriter データを ProtobufPigLoader で読み取れないようです。しかし、代わりに何を使用しますか?ProtobufPigLoader で処理できるように、外部ツールのデータを HDFS に書き込む方法。
別の質問:代わりに何を使用しますか? かなり大きなオブジェクトを Hadoop に書き込んで、Pig で使用するにはどうすればよいですか? オブジェクトはそれほど複雑ではありませんが、リスト (Protobuf の繰り返しフィールド) にサブオブジェクトの大きなリストが含まれています。
- データに対して大きすぎるため、テキスト形式や JSON は避けたいと考えています。データが 2 倍または 3 倍に肥大化することを期待しています (Base64 としてエンコードする必要がある多数の整数、多数のバイト文字列)。
- メインオブジェクトのIDが各サブオブジェクトにアタッチされるようにデータを正規化することは避けたいです(これは現在行われていることです)。これにより、スペースの消費が増え、後の処理で結合が必要になります。
アップデート:
- protobuf ローダー クラスの生成は使用しませんでしたが、リフレクション タイプ ローダーを使用します
- protobuf クラスは、登録されている jar 内にあります。
DESCRIBE
タイプを正しく表示します。
java - JSON オブジェクトが複数行にまたがる、Hadoop で入力を分割する方法
レコードが (ファイルではなく) 複数の行にまたがる可能性がある大きな JSON ファイルを取り込む必要があります (データ プロバイダーがそれをどのように記述しているかに完全に依存します)。
Elephant-Bird は LZO 圧縮を想定していますが、データ プロバイダーがこれを行っていないことはわかっています。
Dzone の記事http://java.dzone.com/articles/hadoop-practiceでは、JSON レコードが同じ行にあると想定しています。
JSON...ファイルをつぶすことを除いて、どんなアイデアも巨大になります...JSONが壊れないようにファイルを適切に分割する方法について。
編集:ファイルではなく行
apache-pig - ElephantBirdパッケージのビルドの失敗:
ElephantBirdソースをダウンロードし、「mvn package」を実行してビルドしようとしましたが、次のエラーが発生します。
mvnバージョン3.0.3を使用していて、MacとUbuntuで試しましたが、同じエラーが発生しました。
編集1:
Lorandのコメントのおかげで、プロトコルバッファをアップグレードすることで上記の問題を解決しました。Thrift 0.7.0もインストールしましたが、elephant-pigのビルド中に別のコンパイルエラーが発生します。
hadoop - ゾウ鳥のコンパイルの失敗: hadoop-compat/target/classes ディレクトリがありません
ElephantBird を使用してシーケンス ファイル ストレージ機能を Pig に追加しようとしています。GitHub から ElephantBird パッケージを複製しましたが、 を使用してコンパイルしようとするとmvn package
、次のエラーが発生します。
ディレクトリをまったく編集していないため、何が起こっているのかわかりません。ElephantBird Readmeの QuickStart に記載されている最初の 2 つの指示に従いました。問題ログを確認しましたが、他の人には発生していないようです。なんでわたし?
hadoop - HDFS からのデータのロードが Elephantbird で機能しない
豚の象鳥でデータを処理しようとしていますが、データの読み込みに成功しません。これが私の豚のスクリプトです:
私が得る出力は
ファイルが存在し、アクセス可能です:
これは、Cloudera 4.6.0 に同梱されている豚バージョンの一般的な問題のようです: 問題は次の行にあるようです:
データをロードするために別のユーザー定義関数を実行すると、同様のエラーが発生しました。
Pig を強制的にローカル モード (''-x local'') にすると、より明白なエラーが発生します。
そのため、Hadoop pig が使用するバージョンは、Cloudera に同梱されているバージョンと互換性がないように思われます。
thrift - 象と鳥のビルドの失敗
Elephant bird を使用して PIG で JSON ファイルを読み書きしたかったので、Mac 用の EB をダウンロードしました
を使用してビルドしようとしました
そしてビルドは以下のように失敗しました、
このリンクElephantBird package build failure:を確認し、thrift 0.9 をダウンロードして、pom.xml で絶対パスを指定しようとしました
それを実行する方法について何か提案をしてください。
apache-pig - エレファント バード ブタ TypeRef ClassNotFoundException
エレファント バード 4.1 を使用して、プロトコル バッファでエンコードされたデータを豚の表現に処理しようとしています。関連する豚コード:
変換を試みるたびに、次のスタック トレースで惨めに失敗します。
私は、これらの依存関係がエレファント・バード・コアにあるはずだと私が見ていることから、これは適切なジャーを含めることに関係していると思われます。
java - エレファントバードの構築中にエラーが発生しました
Pig で使用できるように、Twitter のエレファント バード パッケージをビルドしようとしていますが、エラーが発生します。
私のシステムのMaven情報は次のとおりです。
Thrift と protobuf は既にインストールしています。
EDIT Jigar からのアドバイスに従って、protobuf のバージョンに関係する最初のビルド エラーを修正しました。エラーの原因となっていた pom ファイルの Thrift のバージョン番号も更新しました。しかし、私はまだ次のエラーが発生しています: