問題タブ [avro]
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.
java - avro IDLを使用して列挙型のデフォルト値を指定する方法は?
これに関するドキュメントには何も見つかりませんでした。デフォルト値に関する一般的な bla のみです。私の仮定は、次のように機能するはずでした。
残念ながら、Java の GenericDatumReader は、文字列を見つけているが MyEnum を期待していると不平を言っています。
これが avro IDL を使用してデフォルト値を持つ列挙型を使用する正しい方法であることを誰でも確認できますか? その場合、他の場所にバグがあります。これがそれを行う方法ではないことを確認して、私を修正できますか? どんな入力でも大歓迎です!
更新:これの私の実際のバージョンでは、デフォルト値があるにもかかわらず、レコードに新しく追加された列挙型が問題を引き起こしているようです。これは、私のリーダー スキーマが列挙型を想定しているのに対し、レコードには列挙型が含まれていないことを意味します。スキーマの進化はこれを解決できるはずですが、失敗しているようです。詳細: ここでは直接の Java ではなく、Pig を使用しています。
scala - 逆索引の構築がJavaヒープ・サイズを超えています
これは非常に特殊なケースかもしれませんが、しばらく頭を悩ませた後、Stackoverflow コミュニティの助けを借りようと思いました。
大規模なデータ セット (大規模なシステムからの 1 日分のデータ) の逆インデックスを構築しています。転置インデックスの構築は、Hadoop 上の map reduce ジョブとして実行されます。逆索引は、scala を使用して作成されます。転置インデックスの構造は次のとおりです。{key:"New", ProductID:[1,2,3,4,5,...]}
これらは avro ファイルに書き込まれます。
このプロセス中に、Java ヒープ サイズの問題が発生します。その理由は、上で示した「New」のような用語には、多数の productId(s) が含まれているためだと思います。私のScalaコードで問題が発生する可能性がある大まかな考えがあります:
そして、これが私がこの方法を使用する方法です(多くの場所で使用されますが、同じコード構造とログインが使用されます)
textPipeDump
MultipleTextLine
フィールドオブジェクトをやけどしている
そのテキスト行から必要なフィールドを分割して取得するケースクラスがあり、それがオブジェクトですss
ここに私のスタックトレースがあります:
小さなデータ セットに対してマップ削減ジョブを実行すると、エラーが発生しません。つまり、データが増加すると、New や old などの単語のインデックスを作成する items/product_id の数が大きくなり、ヒープ サイズがオーバーフローすることになります。
したがって、問題は、Java ヒープ サイズのオーバーフローを回避し、このタスクを達成する方法です。
serialization - Avro スキーマ ストレージ
ストレージの avro v/s thrift を評価しています。現時点では、Avro が選択されているようですが、ドキュメントには、シリアル化されたときにスキーマがデータと一緒に保存されると記載されています。これを回避する方法はありますか。データの生成と消費の両方を担当しているため、スキーマのシリアル化を回避できます。また、スキーマを使用したシリアル化されたデータのサイズの違いは、スキーマのないデータよりもはるかに大きいですか?
java - Mapreduce Hadoop ジョブの例外 出力ディレクトリが既に存在します
次の実行コードで mapreduce ジョブを実行していますが、次の例外が発生し続けます。ジョブを開始する前にフォルダーを削除したことを確認しましたが、機能しません。
コード:
例外:
java - Python を使用して AVRO ファイルを読み取る
AVRO ファイル (JAVA で作成) があり、hadoop/mapreduce 用のある種の圧縮ファイルのようです。それをフラット ファイルに「解凍」(デシリアライズ) したいのです。行ごとのレコードごと。
Python用のAVROパッケージがあることを知り、正しくインストールしました。サンプルを実行して、AVRO ファイルを読み取ります。ただし、以下のエラーが発生しました。最も単純な例を読んで何が起こっているのだろうか? 以下のエラーの解釈を手伝ってくれる人はいますか。
ところで、ファイルの 'head' を実行し、VI を使用して AVRO ファイルの最初の数行を開くと、スキーマ定義がいくつかのくだらない奇妙な文字 (おそらく圧縮されたコンテンツ) と一緒に表示されます。生の AVRO ファイルの開始ビットは次のようになります。
以下のような AVRO ファイルを読み取るためにこれらのスキーマが必要かどうかはわかりません。
前もって感謝します。
java - Avro-IDL プロトコルからプログラム API スキーマへ
クライアント サーバーを宣言したい (現時点では、Avro サイトNettyServer
またはHTTPServer
Avro を使用するアプリには 2 つの方法があります)。そのために、IDL ファイルを使用してプロトコルを定義したいと考えています。ファイルに入力するのは IDL プロトコル AVDL だけです。
1. AVDL をプログラム モデルに読み込むにはどうすればよいですか?
IDLProtocolMojoを見つけましたが、すべてのメソッドが保護されているため、アクセスできません。コードでスキーマを定義するために使用できることを知っています。手動で記述された AVDL 定義からオブジェクトを読み取りSchemaBuilder
たいと考えています。Schema
Avro Tools
プログラムに外部コマンドなしですべてをコードで実行させたいので、実際には使用したくありません。
2. AVDL の IDL ではなく、AVPR の JSON で表示されるプロトコル定義でも同様のことができますか?