Rumah > Java > javaTutorial > teks badan

Fail Avro

WBOY
Lepaskan: 2024-08-30 16:17:32
asal
981 orang telah melayarinya

Avro ialah sistem sosial berasaskan baris yang boleh menggunakan rangka kerja siri data yang dibangunkan oleh Apache Hadoop. Fail Avro ialah fail data yang boleh membawa siri data untuk mensiri data dalam format binari padat. Skema akan berada dalam format JSON apabila kami mencubanya dengan Apache MapReduce; kemudian, fail ini boleh menempah penanda apabila kami mempunyai set data besar yang perlu diedarkan kepada subset. Ia juga mempunyai fail bekas untuk menempah data berhati-hati yang boleh dibaca dan ditulis dengan mudah; tidak perlu melakukan konfigurasi tambahan.

Mulakan Kursus Pembangunan Perisian Percuma Anda

Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain

Ikhtisar Fail Avro

Fail Avro ialah sistem siri data yang boleh membekalkan struktur data yang besar dan padat, cepat, format data binari. Ia juga boleh mempunyai fail kontena, yang boleh membawa data berterusan dan menggunakan prosedur RPC. Tambahan pula, kerana ia mempunyai penyepaduan yang mudah, ia boleh digunakan dengan pelbagai bahasa, jadi penciptaan kod baharu tidak diperlukan untuk membaca atau menulis fail data di mana penciptaan kod tidak akan menjadi wajib. Ia hanya boleh digunakan dengan bahasa yang ditaip tegar.

Biasanya ia mempunyai dua segmen: yang pertama ialah skema yang boleh bersifat sukarela, dan yang kedua ialah data binari. Jadi, sebagai contoh, katakan kita ingin melihat fail avro menggunakan editor teks. Dalam kes itu, kami boleh melihat dua segmen di mana segmen pertama akan mengandungi data yang telah bermula dengan objek, dan segmen kedua akan mempunyai data yang boleh dibaca dan jenis fail yang kami perlukan. sahkan Bhoomi mana yang akan boleh membaca dan menulis.

Konfigurasi Fail Avro

Mari kita lihat konfigurasi fail Avro, di mana kita boleh mengubah tindakan fail data Avro dengan bantuan parameter berstruktur yang berbeza.

Apabila kami menggunakan Hadoop,

  • Jika kami ingin mengkonfigurasi fail avro, kami tidak mahu mencapai '. Sambungan Avro pada masa membaca fail kemudian membenarkan untuk melaraskan parameter dengan menggunakan 'avro.mapred.ignore.inputs.without.extension', yang mempunyai palsu sebagai nilai lalai.

Fail Avro

  • Untuk perkara di atas dahulu, kita perlu mencapai percikan, kemudian kandungan percikan, kemudian konfigurasi Hadoop, dan kemudian kita perlu menetapkan(“avro.mapred.ignore.inputs.without.extension”, “true”).

Apabila kita cuba mengkonfigurasi pemampatan, maka kita perlu menetapkan sifat berikut,

  • Kod mampatan – spark.sql.avro.compression.codec mempunyai codec yang tajam dan mengempis di mana snappy ialah codec lalai.
  • Jika kami ingin menetapkan codec mampatan sebagai kempis, maka kami perlu melaraskan tahap mampatan sebagai "spark.sql.avro.deflate.level," dan ia mempunyai '-1' sebagai tahap lalai.
  • Kita juga boleh melaraskan perkara dalam kelompok percikan, seperti

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

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

Fail Avro

Jenis Fail Avro

Terdapat dua jenis fail Avro,

1. Jenis Primitif

Ia termasuk null, Boolean, int, long, double, bait dan rentetan.

Schema: {"type": "null"}
Salin selepas log masuk

2. Jenis Kompleks

  • susun:
{
"kind": "array"
"objects": "long"
}
Salin selepas log masuk
  • peta: kunci ialah rentetan
{
"kind": "map"
"values": "long"
}
Salin selepas log masuk
  • rekod:
{
"kind": "record",
"name": "---",
"doc": "---",
"area": [
{"name": "--", "type": "int"},
---
]
}
Salin selepas log masuk
  • enum:
{
"kind": "enum",
"name": "---",
"doc": "---",
"symbols": ["--", "--"]
}
Salin selepas log masuk
  • tetap: Ia mempunyai bait tak bertanda 8-bit
{
"kind": "fixed",
"name": "---",
"size": in bytes
}
Salin selepas log masuk
  • kesatuan: data akan sama dengan skema
[
"null",
"string",
--
]
Salin selepas log masuk

Contoh Fail Avro

Mari kita lihat contoh fail avro dengan skema dan tanpa skema,

Contoh #1

Fail Avro menggunakan skema:

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)
}
}
Salin selepas log masuk

Dalam contoh di atas di mana skema telah digunakan dengan fail avro, kita boleh mengatakan bahawa ini ialah skrip yang boleh membaca fail avro, dan dalam hal ini, kita telah menghasilkan lebih daripada satu dokumen JSON. Kami telah mengimport pakej yang berkaitan, menetapkan skema dan memanggilnya dengan mencipta objek dan menulis data dalam JSON menggunakan kod seperti yang diberikan dalam skrip di atas.

Contoh #2

Fail Avro tanpa skema:

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)
}
}
Salin selepas log masuk

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.

Atas ialah kandungan terperinci Fail Avro. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!