アブロファイル

WBOY
リリース: 2024-08-30 16:17:32
オリジナル
1068 人が閲覧しました

Avro は、Apache Hadoop によって開発されたデータシリアル化フレームワークを使用できる行ベースのソーシャル システムです。 Avro ファイルは、データをコンパクトなバイナリ形式でシリアル化するためのデータ シリアル化を実行できるデータ ファイルです。 Apache MapReduce で試すと、スキーマは JSON 形式になります。これらのファイルは、サブセットに分散する必要がある巨大なデータセットがある場合にマーカーを予約できます。また、簡単に読み書きできる慎重なデータを保存するためのコンテナ ファイルもあります。追加の構成を行う必要はありません。

無料ソフトウェア開発コースを始めましょう

Web 開発、プログラミング言語、ソフトウェア テスト、その他

Avro ファイルの概要

Avro ファイルは、大規模なデータ構造とコンパクトで高速なバイナリ データ形式を提供できるデータ シリアル化システムです。また、連続データを伝送し、RPC プロシージャを使用できるコンテナ ファイルを持つこともできます。また、統合が容易なため、さまざまな言語で利用できるため、コード作成が必須ではないデータファイルの読み書きの際に、新たなコードを作成する必要がありません。厳密に型指定された言語でのみデプロイできます。

通常、これには 2 つのセグメントがあります。1 つ目は任意のスキーマで、2 つ目はバイナリ データです。たとえば、テキスト エディタを使用して avro ファイルを確認したいとします。その場合、2 つのセグメントを表示できます。最初のセグメントにはオブジェクトで始まるデータが含まれ、2 番目のセグメントには読み取り可能なデータと読み取りが必要なファイル タイプが含まれます。どの Bhoomi が読み書きできるかを確認します。

Avro ファイル構成

Avro ファイルの構成を見てみましょう。この構成では、さまざまな構造化パラメーターを使用して Avro データ ファイルのアクションを変換できます。

Hadoop を使用している場合、

  • avro ファイルを設定したい場合、「.ファイル読み取り時の Avro の拡張機能により、デフォルト値が false である「avro.mapred.ignore.inputs.without.extension」を使用してパラメータを調整できます。

アブロファイル

  • 上記の場合、最初に Spark に到達し、次に Spark コンテンツ、次に Hadoop 構成に到達し、次に set(“avro.mapred.ignore.inputs.without.extension”, “true”) に到達する必要があります。

圧縮を構成しようとするときは、次のプロパティを設定する必要があります。

  • 圧縮コーデック – sparp.sql.avro.compression.codec には、snappy および deflates コーデックがあり、snappy がデフォルトのコーデックです。
  • 圧縮コーデックを deflate に設定したい場合は、圧縮レベルを「spark.sql.avro.deflate.level」として調整する必要があり、デフォルト レベルは「-1」です。
  • 次のようなスパークのクラスター内の要素を調整することもできます。

spark.conf.set(“spark.sql.avro.compression.codec”, “deflate”)

spark.conf.set(“spark.sql.avro.deflate.level”, “4”).

アブロファイル

Avro ファイルの種類

Avro ファイルには 2 つのタイプがあります。

1.プリミティブ型

null、Boolean、int、long、double、bytes、string が含まれます。

Schema: {"type": "null"}
ログイン後にコピー

2.複合型

  • 配列:
{
"kind": "array"
"objects": "long"
}
ログイン後にコピー
  • マップ: キーは文字列です
{
"kind": "map"
"values": "long"
}
ログイン後にコピー
  • 記録:
{
"kind": "record",
"name": "---",
"doc": "---",
"area": [
{"name": "--", "type": "int"},
---
]
}
ログイン後にコピー
  • 列挙型:
{
"kind": "enum",
"name": "---",
"doc": "---",
"symbols": ["--", "--"]
}
ログイン後にコピー
  • 修正: 8 ビットの符号なしバイトがあります
{
"kind": "fixed",
"name": "---",
"size": in bytes
}
ログイン後にコピー
  • union: データはスキーマと等しくなります
[
"null",
"string",
--
]
ログイン後にコピー

Avro ファイルの例

スキーマありとスキーマなしの avro ファイルの例を見てみましょう。

例 #1

スキーマを使用する Avro ファイル:

import java.util.Properties
import java.io.InputStream
import com.boomi.execution.ExecutionUtil
import org.apache.avro.Schema;
import org.apache.avro.file.DataFileStream;
import org.apache.avro.generic.GenericDatumReader;
import org.apache.avro.generic.GenericRecord;
import org.apache.avro.io.DatumReader;
logger = ExecutionUtil.getBaseLogger();
for (int j = 0; j < dataContext.getDataCount(); j++) {
InputStream istm = dataContext.getStream(j)
Properties prop = dataContext.getProperties(j)
DatumReader<GenericRecord> datumReader = new GenericDatumReader<GenericRecord>();
DataFileStream<GenericRecord> dataFileStream = new DataFileStream<GenericRecord>(istm, datumReader);
Schema sche = dataFileStream.getSchema();
logger.info("Schema utilize for: " + sche);
GenericRecord rec = null;
while (dataFileStream.hasNext()) {
rec = dataFileStream.next(rec);
System.out.println(rec);
istm = new ByteArrayInputStream(rec.toString().getBytes('UTF-8'))
dataContext.storeStream(istm, prop)
}
}
ログイン後にコピー

avro ファイルでスキーマが使用されている上記の例では、これが avro ファイルを読み取ることができるスクリプトであると言え、この中で複数の JSON ドキュメントが生成されました。関連するパッケージをインポートし、スキーマを設定し、上記のスクリプトで指定されたコードを使用してオブジェクトを作成し、JSON でデータを書き込むことでそれを呼び出しました。

例 #2

スキーマのない Avro ファイル:

import java.util.Properties
import java.io.InputStream
import com.boomi.execution.ExecutionUtil
import org.apache.avro.Schema;
import org.apache.avro.file.DataFileStream;
import org.apache.avro.generic.GenericDatumReader;
import org.apache.avro.generic.GenericRecord;
import org.apache.avro.io.DatumReader;
logger = ExecutionUtil.getBaseLogger();
String schemaString = '{"type":"record","name":"college","namespace":"student.avro",' +
'"fields":[{"name":"title","type":"string","doc":"college title"},{"name":"exam_date","type":"string","sub":"start date"},{"name":"teacher","type":"int","sub":"main charactor is the teacher in college"}]}'
for (int k = 0; k < dataContext.getDataCount(); k++) {
InputStream istm = dataContext.getStream(k)
Properties prop = dataContext.getProperties(k)
DatumReader<GenericRecord> datumReader = new GenericDatumReader<GenericRecord>();
DataFileStream<GenericRecord> dataFileStre= new DataFileStream<GenericRecord>(istm, datumReader);
Schema sche = Schema.parse(scheString)
logger.info("Schema used: " + sche);
GenericRecord rec = null;
while (dataFileStre.hasNext()) {
rec = dataFileStre.next(rec);
System.out.println(rec);
is = new ByteArrayInputStream(rec.toString().getBytes('UTF-8'))
dataContext.storeStream(is, prop)
}
}
ログイン後にコピー

In the above example, we have written an example of reading files without schema in which we have to understand that if we have not included the schema under the avro file, then we have to perform some steps for informing the interpreter how to explain binary avro data, we also need to generate the schema which has been utilizing, in which this example can avro schema with a different name. We can also set it on another path.

Conclusion

In this article, we have concluded that the avro file is a data file that can work with the data serialized system utilized by Apache Hadoop. It has an open-source platform; we have also seen the configuration of the data files and examples, which helps to understand the concept.

以上がアブロファイルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート