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 檔案:
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) } }
在上面的範例中,schema 與 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中文網其他相關文章!