Skip to content

Instantly share code, notes, and snippets.

@hkwi
Last active April 2, 2019 08:55
Show Gist options
  • Save hkwi/49a7e5cbf0ea5814a909a0cf710de1dd to your computer and use it in GitHub Desktop.
Save hkwi/49a7e5cbf0ea5814a909a0cf710de1dd to your computer and use it in GitHub Desktop.
AVRO bare usage
apt-get install maven openjdk-11-jdk-headless
cat > pom.xml << "EOF"
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>hoge</artifactId>
<groupId>demo</groupId>
<version>0.1</version>
<dependencies>
<dependency>
<groupId>org.apache.avro</groupId>
<artifactId>avro</artifactId>
<version>1.8.1</version>
</dependency>
<dependency>
<groupId>org.apache.avro</groupId>
<artifactId>avro-tools</artifactId>
<version>1.8.1</version>
</dependency>
</dependencies>
</project>
EOF
mvn dependency:copy-dependencies -DoutputDirectory=cp
cat > ping.avsc << "EOF"
{
"type":"record",
"namespace": "demo",
"name":"Ping",
"fields": []
}
EOF
java -jar cp/avro-tools-1.8.1.jar compile schema ping.avsc .
javac --class-path cp/avro-1.8.1.jar:cp/jackson-core-asl-1.9.13.jar demo/Ping.java
jshell --class-path=.:$(echo cp/*.jar|sed "s/ /:/g") --module-path=.
# exit from jshell by typing "/exit" or CTRL-D
import java.io.*;
import org.apache.avro.io.*;
import org.apache.avro.file.*;
import org.apache.avro.specific.*;
import demo.*;
Ping p=new Ping();
DatumWriter<Ping> dw = new SpecificDatumWriter<Ping>(Ping.class);
DataFileWriter<Ping> dfw = new DataFileWriter<Ping>(dw);
dfw.create(p.getSchema(), new File("demo.avro"));
dfw.append(p);
dfw.close();
import org.apache.avro.generic.*;
import org.apache.avro.io.EncoderFactory;
import demo.*;
var schema = Ping.getClassSchema();
var out = new FileOutputStream("demo.json");
var writer = new GenericDatumWriter<GenericRecord>(schema);
var enc = EncoderFactory.get().jsonEncoder(schema, out);
var p = new Ping();
p.setXid("hogehoge");
writer.write(p, enc);
enc.flush();
out.close();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment