Avro는 Apache Hadoop에서 개발한 데이터 직렬화 프레임워크를 사용할 수 있는 행 기반 소셜 시스템입니다. Avro 파일은 압축 바이너리 형식으로 데이터를 직렬화하기 위해 데이터 직렬화를 전달할 수 있는 데이터 파일입니다. Apache MapReduce로 시도하면 스키마는 JSON 형식이 됩니다. 그런 다음 하위 집합으로 배포해야 하는 대규모 데이터 세트가 있는 경우 이러한 파일은 마커를 예약할 수 있습니다. 또한 쉽게 읽고 쓸 수 있는 신중한 데이터를 보관하기 위한 컨테이너 파일도 있습니다. 추가 구성이 필요하지 않습니다.
무료 소프트웨어 개발 과정 시작
웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등
Avro 파일은 대규모 데이터 구조와 작고 빠른 바이너리 데이터 형식을 제공할 수 있는 데이터 직렬화 시스템입니다. 또한 지속적인 데이터를 운반하고 RPC 절차를 사용할 수 있는 컨테이너 파일을 가질 수도 있습니다. 또한, 간단한 통합으로 다양한 언어로 사용이 가능하므로 코드 생성이 필수가 아닌 데이터 파일을 읽거나 쓸 때 새로운 코드 생성이 필요하지 않습니다. 엄격한 유형의 언어로만 배포할 수 있습니다.
일반적으로 두 개의 세그먼트가 있습니다. 첫 번째는 자발적일 수 있는 스키마이고 두 번째는 바이너리 데이터입니다. 예를 들어 텍스트 편집기를 사용하여 avro 파일을 보고 싶다고 가정해 보겠습니다. 이 경우 첫 번째 세그먼트에는 객체로 시작하는 데이터가 포함되고 두 번째 세그먼트에는 읽을 수 있는 데이터와 필요한 파일 형식이 포함되는 두 개의 세그먼트를 볼 수 있습니다. 어떤 Bhoomi가 읽고 쓸 수 있는지 확인하세요.
다양한 구조적 매개변수를 사용하여 Avro 데이터 파일의 작업을 변환할 수 있는 Avro 파일의 구성을 살펴보겠습니다.
Hadoop을 사용하는 경우
압축을 구성하려면 다음 속성을 설정해야 합니다.
spark.conf.set(“spark.sql.avro.compression.codec”, “deflate”)
spark.conf.set(“spark.sql.avro.deflate.level”, “4”).
Avro 파일에는 두 가지 유형이 있습니다.
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 파일의 예를 살펴보겠습니다.
스키마를 사용하는 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 문서를 생성했습니다. 위 스크립트에서 주어진 코드를 이용하여 관련 패키지를 import하고, 스키마를 설정하고, 객체를 생성하고 데이터를 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!