https://avro.apache.org/docs/1.8.2/gettingstartedjava.html
http://cr.openjdk.java.net/~rfield/tutorial/JShellTutorial.html
https://gist.github.com/carloslima/af2cc498164aba8e4073367409353628
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(); |