Jadual Kandungan
Pengenalan adegan
Prasyarat
Langkah operasi
Rumah Operasi dan penyelenggaraan Apache Mari kita bincangkan tentang cara menghuraikan data Apache Avro (penjelasan dengan contoh)

Mari kita bincangkan tentang cara menghuraikan data Apache Avro (penjelasan dengan contoh)

Feb 22, 2022 am 10:47 AM
apache

Bagaimana untuk menghuraikan data Apache Avro? Artikel ini akan memperkenalkan anda kepada kaedah bersiri untuk menjana data Avro, menyahsiri untuk menghuraikan data Avro dan menggunakan FlinkSQL untuk menghuraikan data Avro saya harap ia akan membantu anda.

Mari kita bincangkan tentang cara menghuraikan data Apache Avro (penjelasan dengan contoh)

Dengan perkembangan pesat Internet, teknologi termaju seperti pengkomputeran awan, data besar, kecerdasan buatan AI dan Internet Perkara telah menjadi arus perdana teknologi tinggi teknologi pada era hari ini, seperti laman web e-dagang , pengecaman muka, pemanduan tanpa pemandu, rumah pintar, bandar pintar, dan lain-lain, bukan sahaja memudahkan keperluan harian orang ramai, makanan, perumahan dan pengangkutan, tetapi di sebalik tabir, sentiasa ada yang besar. jumlah data yang dikumpul, dikosongkan dan dianalisis oleh pelbagai platform sistem, dan adalah penting untuk memastikan kependaman rendah, daya pemprosesan tinggi, dan keselamatan data Apache Avro sendiri disiri melalui Skema untuk penghantaran binari memastikan penghantaran data berkelajuan tinggi, dan sebaliknya, ia memastikan keselamatan data , avro kini digunakan secara lebih meluas dalam pelbagai industri Cara memproses dan menghuraikan data avro amat penting data avro melalui siri dan gunakan FlinkSQL untuk analisis.

Artikel ini ialah demo penghuraian avro Pada masa ini, FlinkSQL hanya sesuai untuk penghuraian data avro yang kompleks tidak disokong buat masa ini.

Pengenalan adegan

Artikel ini terutamanya memperkenalkan tiga kandungan utama berikut:

  • Cara mensiri dan menjana data Avro

  • Cara menyahsiri dan menghuraikan data Avro

  • Cara menggunakan FlinkSQL untuk menghuraikan data Avro

Prasyarat

  • Untuk memahami apa itu avro, anda boleh merujuk kepada panduan permulaan pantas laman web rasmi apache avro

  • Fahami senario aplikasi avro

Langkah operasi

1 Cipta projek avro maven baharu dan konfigurasikan kebergantungan pom

Mari kita bincangkan tentang cara menghuraikan data Apache Avro (penjelasan dengan contoh)

Kandungan fail pom adalah seperti berikut:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.huawei.bigdata</groupId>
    <artifactId>avrodemo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>org.apache.avro</groupId>
            <artifactId>avro</artifactId>
            <version>1.8.1</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.avro</groupId>
                <artifactId>avro-maven-plugin</artifactId>
                <version>1.8.1</version>
                <executions>
                    <execution>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>schema</goal>
                        </goals>
                        <configuration>
                            <sourceDirectory>${project.basedir}/src/main/avro/</sourceDirectory>
                            <outputDirectory>${project.basedir}/src/main/java/</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>
Salin selepas log masuk

Nota: Fail pom di atas dikonfigurasikan Menjana laluan kelas secara automatik, iaitu p roject.basedir/s rc/ma in/avro/ dan {project.basedir}/src/main/avro/ dan {project.basedir}/src/main /java/. Selepas konfigurasi ini, apabila melaksanakan perintah mvn, Pemalam ini akan menjana fail kelas secara automatik daripada skema avsc dalam direktori ini dan meletakkannya dalam direktori yang terakhir. Jika direktori avro tidak dijana, buat sahaja secara manual.

2. Tentukan skema

Gunakan JSON untuk mentakrifkan skema untuk Avro. Skema terdiri daripada jenis asas (null, boolean, int, long, float, double, bait dan rentetan) dan jenis kompleks (rekod, enum, tatasusunan, peta, kesatuan dan tetap). Sebagai contoh, yang berikut mentakrifkan skema pengguna, mencipta direktori avro dalam direktori utama dan kemudian mencipta pengguna fail baharu.avsc dalam direktori avro:

{"namespace": "lancoo.ecbdc.pre",
 "type": "record",
 "name": "User",
 "fields": [
     {"name": "name", "type": "string"},
     {"name": "favorite_number",  "type": ["int", "null"]},
     {"name": "favorite_color", "type": ["string", "null"]}
 ]
}
Salin selepas log masuk

Mari kita bincangkan tentang cara menghuraikan data Apache Avro (penjelasan dengan contoh)

3. Susun skema

点击maven projects项目的compile进行编译,会自动在创建namespace路径和User类代码

Mari kita bincangkan tentang cara menghuraikan data Apache Avro (penjelasan dengan contoh)

4、序列化

创建TestUser类,用于序列化生成数据

User user1 = new User();
user1.setName("Alyssa");
user1.setFavoriteNumber(256);
// Leave favorite col or null

// Alternate constructor
User user2 = new User("Ben", 7, "red");

// Construct via builder
User user3 = User.newBuilder()
        .setName("Charlie")
        .setFavoriteColor("blue")
        .setFavoriteNumber(null)
        .build();

// Serialize user1, user2 and user3 to disk
DatumWriter<User> userDatumWriter = new SpecificDatumWriter<User>(User.class);
DataFileWriter<User> dataFileWriter = new DataFileWriter<User>(userDatumWriter);
dataFileWriter.create(user1.getSchema(), new File("user_generic.avro"));
dataFileWriter.append(user1);
dataFileWriter.append(user2);
dataFileWriter.append(user3);
dataFileWriter.close();
Salin selepas log masuk

执行序列化程序后,会在项目的同级目录下生成avro数据

Mari kita bincangkan tentang cara menghuraikan data Apache Avro (penjelasan dengan contoh)

user_generic.avro内容如下:

Objavro.schema�{"type":"record","name":"User","namespace":"lancoo.ecbdc.pre","fields":[{"name":"name","type":"string"},{"name":"favorite_number","type":["int","null"]},{"name":"favorite_color","type":["string","null"]}]}
Salin selepas log masuk

至此avro数据已经生成。

5、反序列化

通过反序列化代码解析avro数据

// Deserialize Users from disk
DatumReader<User> userDatumReader = new SpecificDatumReader<User>(User.class);
DataFileReader<User> dataFileReader = new DataFileReader<User>(new File("user_generic.avro"), userDatumReader);
User user = null;
while (dataFileReader.hasNext()) {
    // Reuse user object by passing it to next(). This saves us from
    // allocating and garbage collecting many objects for files with
    // many items.
    user = dataFileReader.next(user);
    System.out.println(user);
}
Salin selepas log masuk

执行反序列化代码解析user_generic.avro

Mari kita bincangkan tentang cara menghuraikan data Apache Avro (penjelasan dengan contoh)

avro数据解析成功。

6、将user_generic.avro上传至hdfs路径

hdfs dfs -mkdir -p /tmp/lztest/

hdfs dfs -put user_generic.avro /tmp/lztest/
Salin selepas log masuk

Mari kita bincangkan tentang cara menghuraikan data Apache Avro (penjelasan dengan contoh)

7、配置flinkserver

  • 准备avro jar包

将flink-sql-avro-*.jar、flink-sql-avro-confluent-registry-*.jar放入flinkserver lib,将下面的命令在所有flinkserver节点执行

cp /opt/huawei/Bigdata/FusionInsight_Flink_8.1.2/install/FusionInsight-Flink-1.12.2/flink/opt/flink-sql-avro*.jar /opt/huawei/Bigdata/FusionInsight_Flink_8.1.3/install/FusionInsight-Flink-1.12.2/flink/lib

chmod 500 flink-sql-avro*.jar

chown omm:wheel flink-sql-avro*.jar
Salin selepas log masuk

Mari kita bincangkan tentang cara menghuraikan data Apache Avro (penjelasan dengan contoh)

  • 同时重启FlinkServer实例,重启完成后查看avro包是否被上传

    hdfs dfs -ls /FusionInsight_FlinkServer/8.1.2-312005/lib

Mari kita bincangkan tentang cara menghuraikan data Apache Avro (penjelasan dengan contoh)

8、编写FlinkSQL

CREATE TABLE testHdfs(
  name String,
  favorite_number int,
  favorite_color String
) WITH(
  &#39;connector&#39; = &#39;filesystem&#39;,
  &#39;path&#39; = &#39;hdfs:///tmp/lztest/user_generic.avro&#39;,
  &#39;format&#39; = &#39;avro&#39;
);CREATE TABLE KafkaTable (
  name String,
  favorite_number int,
  favorite_color String
) WITH (
  &#39;connector&#39; = &#39;kafka&#39;,
  &#39;topic&#39; = &#39;testavro&#39;,
  &#39;properties.bootstrap.servers&#39; = &#39;96.10.2.1:21005&#39;,
  &#39;properties.group.id&#39; = &#39;testGroup&#39;,
  &#39;scan.startup.mode&#39; = &#39;latest-offset&#39;,
  &#39;format&#39; = &#39;avro&#39;
);
insert into
  KafkaTable
select
  *
from
  testHdfs;
Salin selepas log masuk

Mari kita bincangkan tentang cara menghuraikan data Apache Avro (penjelasan dengan contoh)

保存提交任务

9、查看对应topic中是否有数据

Mari kita bincangkan tentang cara menghuraikan data Apache Avro (penjelasan dengan contoh)

FlinkSQL解析avro数据成功。

【推荐:Apache使用教程

Atas ialah kandungan terperinci Mari kita bincangkan tentang cara menghuraikan data Apache Avro (penjelasan dengan contoh). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China 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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menetapkan direktori CGI di Apache Cara menetapkan direktori CGI di Apache Apr 13, 2025 pm 01:18 PM

Untuk menubuhkan direktori CGI di Apache, anda perlu melakukan langkah-langkah berikut: Buat direktori CGI seperti "CGI-Bin", dan memberikan kebenaran menulis Apache. Tambah blok arahan "Scriptalias" dalam fail konfigurasi Apache untuk memetakan direktori CGI ke url "/cgi". Mulakan semula Apache.

Cara Memulakan Apache Cara Memulakan Apache Apr 13, 2025 pm 01:06 PM

Langkah-langkah untuk memulakan Apache adalah seperti berikut: Pasang Apache (perintah: sudo apt-get pemasangan apache2 atau muat turun dari laman web rasmi) Mula Apache (linux: Sudo Systemctl Mula Apache2; Windows: Klik kanan "Apache2.4" Perkhidmatan dan pilih "Mula") Boot secara automatik (Pilihan, Linux: Sudo Systemctl

Cara menyambung ke pangkalan data Apache Cara menyambung ke pangkalan data Apache Apr 13, 2025 pm 01:03 PM

Apache menyambung ke pangkalan data memerlukan langkah -langkah berikut: Pasang pemacu pangkalan data. Konfigurasikan fail web.xml untuk membuat kolam sambungan. Buat sumber data JDBC dan tentukan tetapan sambungan. Gunakan API JDBC untuk mengakses pangkalan data dari kod Java, termasuk mendapatkan sambungan, membuat kenyataan, parameter mengikat, melaksanakan pertanyaan atau kemas kini, dan hasil pemprosesan.

Apa yang Harus Dilakukan Sekiranya Pelabuhan Apache80 Diduduki Apa yang Harus Dilakukan Sekiranya Pelabuhan Apache80 Diduduki Apr 13, 2025 pm 01:24 PM

Apabila port Apache 80 diduduki, penyelesaiannya adalah seperti berikut: Cari proses yang menduduki pelabuhan dan tutupnya. Semak tetapan firewall untuk memastikan Apache tidak disekat. Jika kaedah di atas tidak berfungsi, sila buat semula Apache untuk menggunakan port yang berbeza. Mulakan semula perkhidmatan Apache.

Cara memadam lebih daripada nama pelayan Apache Cara memadam lebih daripada nama pelayan Apache Apr 13, 2025 pm 01:09 PM

Untuk memadam arahan Serverve Name tambahan dari Apache, anda boleh mengambil langkah -langkah berikut: Kenal pasti dan padamkan Arahan ServerName tambahan. Mulakan semula Apache untuk membuat perubahan berkuatkuasa. Semak fail konfigurasi untuk mengesahkan perubahan. Uji pelayan untuk memastikan masalah diselesaikan.

Cara melihat versi Apache anda Cara melihat versi Apache anda Apr 13, 2025 pm 01:15 PM

Terdapat 3 cara untuk melihat versi pada pelayan Apache: melalui baris arahan (Apachectl -v atau Apache2CTL -V), periksa halaman status pelayan (http: // & lt; IP pelayan atau nama domain & gt;/pelayan -status), atau lihat fail konfigurasi Apache (Serverversion: Apache/& lt;

Bagaimana Debian Meningkatkan Kelajuan Pemprosesan Data Hadoop Bagaimana Debian Meningkatkan Kelajuan Pemprosesan Data Hadoop Apr 13, 2025 am 11:54 AM

Artikel ini membincangkan cara meningkatkan kecekapan pemprosesan data Hadoop pada sistem Debian. Strategi pengoptimuman meliputi peningkatan perkakasan, pelarasan parameter sistem operasi, pengubahsuaian konfigurasi Hadoop, dan penggunaan algoritma dan alat yang cekap. 1. Pengukuhan sumber perkakasan memastikan bahawa semua nod mempunyai konfigurasi perkakasan yang konsisten, terutama memberi perhatian kepada prestasi CPU, memori dan peralatan rangkaian. Memilih komponen perkakasan berprestasi tinggi adalah penting untuk meningkatkan kelajuan pemprosesan keseluruhan. 2. Sistem operasi Tunes deskriptor fail dan sambungan rangkaian: Ubah suai fail /etc/security/limits.conf untuk meningkatkan had atas deskriptor fail dan sambungan rangkaian yang dibenarkan dibuka pada masa yang sama oleh sistem. Pelarasan Parameter JVM: Laraskan fail Hadoop-env.sh

Cara menyelesaikan masalah yang tidak dapat dimulakan oleh Apache Cara menyelesaikan masalah yang tidak dapat dimulakan oleh Apache Apr 13, 2025 pm 01:21 PM

Apache tidak boleh bermula kerana sebab -sebab berikut mungkin: ralat sintaks fail konfigurasi. Konflik dengan port permohonan lain. Isu kebenaran. Keluar dari ingatan. Proses kebuntuan. Kegagalan daemon. Isu Kebenaran Selinux. Masalah firewall. Konflik perisian.

See all articles