Avro は、Apache Hadoop によって開発されたデータシリアル化フレームワークを使用できる行ベースのソーシャル システムです。 Avro ファイルは、データをコンパクトなバイナリ形式でシリアル化するためのデータ シリアル化を実行できるデータ ファイルです。 Apache MapReduce で試すと、スキーマは JSON 形式になります。これらのファイルは、サブセットに分散する必要がある巨大なデータセットがある場合にマーカーを予約できます。また、簡単に読み書きできる慎重なデータを保存するためのコンテナ ファイルもあります。追加の構成を行う必要はありません。
無料ソフトウェア開発コースを始めましょう
Web 開発、プログラミング言語、ソフトウェア テスト、その他
Avro ファイルは、大規模なデータ構造とコンパクトで高速なバイナリ データ形式を提供できるデータ シリアル化システムです。また、連続データを伝送し、RPC プロシージャを使用できるコンテナ ファイルを持つこともできます。また、統合が容易なため、さまざまな言語で利用できるため、コード作成が必須ではないデータファイルの読み書きの際に、新たなコードを作成する必要がありません。厳密に型指定された言語でのみデプロイできます。
通常、これには 2 つのセグメントがあります。1 つ目は任意のスキーマで、2 つ目はバイナリ データです。たとえば、テキスト エディタを使用して avro ファイルを確認したいとします。その場合、2 つのセグメントを表示できます。最初のセグメントにはオブジェクトで始まるデータが含まれ、2 番目のセグメントには読み取り可能なデータと読み取りが必要なファイル タイプが含まれます。どの Bhoomi が読み書きできるかを確認します。
Avro ファイルの構成を見てみましょう。この構成では、さまざまな構造化パラメーターを使用して Avro データ ファイルのアクションを変換できます。
Hadoop を使用している場合、
圧縮を構成しようとするときは、次のプロパティを設定する必要があります。
spark.conf.set(“spark.sql.avro.compression.codec”, “deflate”)
spark.conf.set(“spark.sql.avro.deflate.level”, “4”).
Avro ファイルには 2 つのタイプがあります。
null、Boolean、int、long、double、bytes、string が含まれます。
Schema: {"type": "null"}
{ "kind": "array" "objects": "long" }
{ "kind": "map" "values": "long" }
{ "kind": "record", "name": "---", "doc": "---", "area": [ {"name": "--", "type": "int"}, --- ] }
{ "kind": "enum", "name": "---", "doc": "---", "symbols": ["--", "--"] }
{ "kind": "fixed", "name": "---", "size": in bytes }
[ "null", "string", -- ]
スキーマありとスキーマなしの avro ファイルの例を見てみましょう。
スキーマを使用する 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 でデータを書き込むことでそれを呼び出しました。
スキーマのない 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.
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 サイトの他の関連記事を参照してください。