Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Знатоки hadoop и avro. / 4 сообщений из 4, страница 1 из 1
19.08.2017, 16:14
    #39507861
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Знатоки hadoop и avro.
Подскажите правильный вариант использования 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
26.08.2017, 12:14
    #39510875
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Знатоки hadoop и avro.
Чортов слон. Ни у кого из Java-истов не вызывает интереса. Эх пойду в лагерь Spark...
...
Рейтинг: 0 / 0
29.08.2017, 13:20
    #39512182
hck1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Знатоки hadoop и avro.
mayton,

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

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


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