powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Знатоки hadoop и avro.
4 сообщений из 4, страница 1 из 1
Знатоки hadoop и avro.
    #39507861
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите правильный вариант использования DatumReader::read

StringPair.avsc
Код: json
1.
2.
3.
4.
5.
6.
7.
8.
{
   "type" : "record",
   "name" : "StringPair",
   "doc"  : "A pair of Strings",
   "fields" : [
       { "name" : "left", "type" : "string" },
       { "name" : "right", "type" : "string" }
   ]
}

App.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
import org.apache.avro.Schema;
import org.apache.avro.generic.GenericData;
import org.apache.avro.generic.GenericDatumReader;
import org.apache.avro.generic.GenericDatumWriter;
import org.apache.avro.generic.GenericRecord;
import org.apache.avro.io.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.*;

public class App {

    static Logger logger = LoggerFactory.getLogger(App.class);

    public App() throws IOException {

        logger.info("::configure schema");

        Schema.Parser parser = new Schema.Parser();

        Schema schema = parser.parse(new FileInputStream("schema/StringPair.avsc"));
        /////
        logger.info("::populate record");

        GenericRecord datum = new GenericData.Record(schema);
        datum.put("left","1");
        datum.put("right","2");

        logger.info("::write");

        OutputStream outStream = new FileOutputStream("tmp/out1.avro");
        DatumWriter<GenericRecord> writer = new GenericDatumWriter<>(schema);
        Encoder encoder = EncoderFactory.get().binaryEncoder(outStream, null);
        writer.write(datum, encoder);
        encoder.flush();
        outStream.close();

        logger.info("::read");

        DatumReader<GenericRecord> reader = new GenericDatumReader<>();
        InputStream inStream = new FileInputStream("tmp/out1.avro");

        Decoder decoder = DecoderFactory.get().binaryDecoder(inStream, null);

        // TODO: Throws a NPE. Wtf?
        GenericRecord result = reader.read(null, decoder);

        logger.info(":: left = {}", result.get("left").toString());
        logger.info(":: right = {}", result.get("right").toString());

        logger.info("::end");
    }

    public static void main(String[] args) throws IOException {
        new App();
    }
}



Пока получаю NPE.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
[main] INFO mayton.probeavro.App - ::configure schema
[main] INFO mayton.probeavro.App - ::populate record
[main] INFO mayton.probeavro.App - ::write
[main] INFO mayton.probeavro.App - ::read
Exception in thread "main" java.lang.NullPointerException: writer cannot be null!
	at org.apache.avro.io.ResolvingDecoder.resolve(ResolvingDecoder.java:80)
	at org.apache.avro.io.ResolvingDecoder.<init>(ResolvingDecoder.java:49)
	at org.apache.avro.io.DecoderFactory.resolvingDecoder(DecoderFactory.java:307)
	at org.apache.avro.generic.GenericDatumReader.getResolver(GenericDatumReader.java:128)
	at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:143)
	at mayton.probeavro.App.<init>(App.java:49)
	at mayton.probeavro.App.main(App.java:58)


Пример - вобщем-то взят из книги со Слоном.

Спасибо.
...
Рейтинг: 0 / 0
Знатоки hadoop и avro.
    #39510875
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чортов слон. Ни у кого из Java-истов не вызывает интереса. Эх пойду в лагерь Spark...
...
Рейтинг: 0 / 0
Знатоки hadoop и avro.
    #39512182
hck1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

в книге все примеры схему подпихивают явно

DatumReader<GenericRecord> reader = new GenericDatumReader<GenericRecord>( schema );
...
Рейтинг: 0 / 0
Знатоки hadoop и avro.
    #39512450
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Попробую. Наверное проглядел.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Знатоки hadoop и avro.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]