問題タブ [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.

0 投票する
3 に答える
7656 参照

java - Java で、ファイルを媒体として強制的に使用せずに、Apache Avro コンテナー ファイルに相当するものを作成するにはどうすればよいですか?

これは、Apache Avro の Java 実装に精通した人がこれを読んでいる場合に備えて、闇の中のショットのようなものです。

私の高レベルの目標は、一連の avro データをネットワーク経由で送信する方法を確立することです (たとえば、HTTP としましょう。ただし、特定のプロトコルはこの目的にとってそれほど重要ではありません)。私のコンテキストでは、このデータを何らかの方法で書き込む必要がある HttpServletResponse があります。

最初に、avro コンテナー ファイルの仮想バージョンに相当するものとしてデータを書き込もうとしました (「応答」が HttpServletResponse 型であると仮定します)。

Avro が実際のファイルとは別にコンテナー ファイルを読み取る方法を実際には提供していないことが判明したことを除いて、これはすべて問題なく適切でした: DataFileReader には 2 つのコンストラクターしかありません。

ここで、 SeekableInput は avro 固有のカスタマイズされたフォームであり、その作成も最終的にファイルから読み取られます。これを考えると、何らかの方法で InputStream をファイルに強制する方法がない限り (http://stackoverflow.com/questions/578305/create-a-java-file-object-or-equivalent-using-a-byte- array-in-memory-without-a は存在しないことを示唆しており、Java ドキュメントも調べてみました)、OutputStream の反対側のリーダーがその avro コンテナー ファイルを受信した場合、このアプローチは機能しません (反対側の対応する InputStream からそれらを読み取る方法を提供せずに、avro バイナリ コンテナー ファイルを任意の OutputStream に出力することを許可した理由はわかりませんが、それは問題ではありません)。コンテナファイルリーダーの実装には「シーク可能」が必要なようです

さて、そのアプローチが私が望むことをするようには見えません。avro コンテナー ファイルを模倣する JSON 応答を作成するのはどうですか?

上記の制約を考えると、これがこれにアプローチする最良の方法であるかどうかはわかりませんが、これでうまくいくようです。スキーマ (たとえば、上記の「Schema someSchema」) を「schema」フィールド内の文字列として配置し、そのスキーマに適合するレコードの avro-binary-serialized 形式 (つまり、「GenericRecord」) に配置します。 someRecord") を "data" フィールド内に挿入します。

私は実際に以下で説明する特定の詳細について知りたかったのですが、より大きなコンテキストを提供することも価値があると思いました。しかし、最適とは思えません)お知らせください。

私の質問は、この JSON ベースのアプローチを使用すると仮定すると、レコードの avro バイナリ表現を AvroContainer スキーマの「データ」フィールドに書き込むにはどうすればよいですか? たとえば、私はここまで来ました:

最初は ByteBuffer.wrap 句を省略しようとしましたが、その後、次の行

バイト配列を ByteBuffer にキャストできないという例外をスローしました。Encoder クラス (JsonEncoder はそのサブクラス) を呼び出して avro Bytes オブジェクトを書き込む場合、引数として ByteBuffer を指定する必要があるように見えます。したがって、byte[] を java.nio.ByteBuffer.wrap でカプセル化しようとしましたが、データが出力されると、avro 16 進表現を通過せずに、一連のバイトとして出力されました。

それは正しくないようです。avroのドキュメントによると、彼らが提供するbytesオブジェクトの例には、jsonオブジェクトを入れる必要があると書かれており、その例は「\u00FF」のように見えますが、そこに入れたものは明らかにその形式ではありません。私が今知りたいことは次のとおりです。

  • avro バイト形式の例は何ですか? 「\uDEADBEEFDEADBEEF...」のように見えますか?
  • バイナリ avro データ (BinaryEncoder による byte[] 配列への出力) を、GenericRecord オブジェクトに貼り付けて JSON で正しく出力できる形式に変換するにはどうすればよいですか? たとえば、GenericRecord "someRecord.put("data", DATA);" で呼び出すことができる Object DATA が必要です。私の avro シリアル化されたデータが内部にある?
  • テキスト JSON 表現が与えられ、AvroContainer 形式の JSON で表されるように GenericRecord を再作成したい場合、そのデータをもう一方の (消費者) 側でバイト配列に戻すにはどうすればよいでしょうか?
  • (前からの質問を繰り返します)これをすべて行うことができるより良い方法はありますか?
0 投票する
0 に答える
315 参照

c++ - コンパイル ファイルに C++ の apache avro が含まれている方法

c++で「送信側」と「受信側」の2つのプログラムを書きました。送信側から受信側にオブジェクトを送信したいです。Avro Apacheを使いたいです。Apache サイトのドキュメントを読みました。そこから 1 つのサンプルをコピーします。Avro のすべての .cpp および .hh ファイルを自分のプロジェクトに移動し、それらすべてを含めますが、動作しません。どうすればよいですか?

0 投票する
2 に答える
274 参照

hadoop - Hadoop ストリーミングの下位互換性

AFAK、Hadoop Streaming はテキスト入力のみをサポートします。つまり、データは行単位で編成されます。しかし、下位互換性が必要な場合は、マッパー コードが乱雑になり、c++ で記述された同じマッパー プログラムで異なるバージョンのログ行がサポートされます。

以前は avro や protobuf を検討していましたが、ストリーミング モードではサポートされていないようですが、本当ですか?

他に解決策はありますか?

0 投票する
5 に答える
55674 参照

java - Avroバイナリエンコーダを使用してKafkaメッセージをエンコード/デコードする方法は?

Kafka から読み書きされるメッセージに Avro を使用しようとしています。Avro バイナリ エンコーダーを使用して、メッセージ キューに入れられるデータをエンコード/デコードする例はありますか?

Kafkaの部分よりもAvroの部分が必要です。または、おそらく別のソリューションを検討する必要がありますか?基本的に、スペースに関して JSON のより効率的なソリューションを見つけようとしています。Avro は、JSON よりもコンパクトになる可能性があるため、言及されました。

0 投票する
1 に答える
1406 参照

hadoop - HadoopのDBInputFormatを使用したMultipleInputs

私のデータベースには複数のテーブルがあり、各テーブルは異なるエンティティタイプです。これらの異なるエンティティタイプのすべてのフィールドの和集合であるhadoopで使用するAvroスキーマがあり、さらにエンティティタイプフィールドがあります。

私がやりたいのは、エンティティタイプを結合されたAvroタイプにマップする、エンティティタイプごとにDBWritableを使用してDBInputFormatを設定するという方針に沿ったものです。次に、各DBInputFormatをMultipleInputsのようなものに指定して、複合入力フォーマットを作成できるようにします。次に、複合入力フォーマットをマップリデュースジョブに指定して、すべてのテーブルのすべてのデータを同じマッパークラスで一度に処理できるようにすることができます。

データはこれらのデータベーステーブルに絶えず追加されるため、新しいデータのみを取得して適切に分割するように、エンティティタイプ/dbtableごとにDBInputFormatを構成できる必要があります。

基本的に、DBInputFormatまたはDataDrivenDBInputFormatの機能が必要ですが、パスやMultipleInputsで実行できるのと同様の複合を作成する機能も必要です。

0 投票する
1 に答える
1558 参照

java - Avro json デコーダ: 名前空間を無視

プロジェクトでApache Avroを使用しようとしました...そして、いくつかの問題に遭遇しました avroシリアライゼーション/デシリアライゼーションは魅力のように機能します...しかし、デコーダーの例外が発生します..不明なユニオンブランチのような何とか何とか...場合に備えて着信 json に namepsace レコードが含まれていない ... 例

オブジェクトをデフォルトの名前空間に入れることはできません...しかし、名前空間ノードが含まれているかどうかに関係なく、着信jsonを解析することが重要です修正するのを手伝ってくれませんか

0 投票する
2 に答える
1879 参照

cat - Apache の avro 用の cat ユーティリティはありますか?

Apache のバイナリ avro ファイル形式用の「cat」ユーティリティがあるかどうか知りたいですか?

それぞれ gzip と bzip2 の zcat または bzcat の行に沿ったもの。

ご協力いただきありがとうございます!

0 投票する
1 に答える
1046 参照

java - avro-maven-plugin バージョン 1.6.1 を使用する場合の非推奨コード

Apache Avro を使用して Java コードを実行しています。一部のコードは Java ファイルで非推奨になっていますが、その理由はわかりません。Maven を使用して Java プログラムを実行しています。これはJavaファイルです

}

何が問題ですか?ブロック内のコードは非推奨になりつつあります。

これは .avsc ファイルです

}

プログラムは正常に実行されています。一部のコードが非推奨になっているだけです。バージョン 1.5.1 を使用する場合、同じコードは非推奨ではありません

0 投票する
2 に答える
6837 参照

avro - 既存のAvroデータファイルにデータを追加できますか?

既存のAvroシリアル化ファイルにデータを追加する方法がないようです。複数のプロセスで1つのavroファイルに書き込みたいのですが、開くたびに最初からやり直すようです。すべてのデータを読み込んでから、もう一度書き戻したくありません。

ルビーのサンプルコードを使用して、さまざまな設定として「ab」と「ab +」を試しましたが、喜びはありませんでした。

0 投票する
1 に答える
651 参照

hadoop - Pig の AvroStorage を使用したカンマ区切りのリスト

コンマ区切りのリストを使用して、Pig の AvroStorage で複数のファイルをロードしようとしました。私が使用したステートメントは次のとおりです。

Pig は、ジョブで入力パスが指定されていないと述べています。以下のスタックトレースを参照してください。豚のバージョン0.8.1-cdh3u2と0.9.1を試しました。

誰かが同じ行動を観察しますか? それはバグですか、それとも機能ですか?

スタックトレース: