Чтение бинарного авро у свиньи

Я отправляю двоичный объект в HDFS, и у меня есть Flume Agent и настройка приемника выглядит следующим образом

a1.sinks.k1.type = hdfs
a1.sinks.k1.channel = c1
a1.sinks.k1.hdfs.path = /user/%y-%m-%d/%H%M/%S
a1.sinks.k1.hdfs.filePrefix = events-
a1.sinks.k1.hdfs.round = true
a1.sinks.k1.hdfs.roundValue = 10
a1.sinks.k1.hdfs.roundUnit = minute

a1.sinks.k1.hdfs.fileType = DataStream
a1.sinks.k1.hdfs.serializer = avro_event
a1.sinks.k1.hdfs.serializer.syncIntervalBytes = 4096000
a1.sinks.k1.hdfs.serializer.compressionCodec = snappy
a1.sinks.k1.hdfs.serializer.appendNewline = false
a1.sinks.k1.hdfs.fileSuffix=.avro
a1.sinks.k1.hdfs.writeFormat=TEXT

Теперь я пытаюсь прочитать этот файл (some.avro) из HDFS с помощью этого

data = LOAD 'something.avro'
      USING org.apache.pig.piggybank.storage.avro.AvroStorage();
dump data;

Я продолжаю получать это исключение, любую идею о том, почему я получаю это исключение или есть другой способ чтения двоичного объекта avro в сценарии pig, не предоставляя схему avro

Caused by: java.io.IOException: Not a data file.
at org.apache.avro.file.DataFileStream.initialize(DataFileStream.java:105)
at org.apache.avro.file.DataFileStream.<init>(DataFileStream.java:84)
at org.apache.pig.piggybank.storage.avro.AvroStorageUtils.getSchema(AvroStorageUtils.java:718)
at org.apache.pig.piggybank.storage.avro.AvroStorage.getSchema(AvroStorage.java:349)
at org.apache.pig.piggybank.storage.avro.AvroStorage.getAvroSchema(AvroStorage.java:277)
at org.apache.pig.piggybank.storage.avro.AvroStorage.getAvroSchema(AvroStorage.java:248)
at org.apache.pig.piggybank.storage.avro.AvroStorage.setInputAvroSchema(AvroStorage.java:226)
at org.apache.pig.piggybank.storage.avro.AvroStorage.getSchema(AvroStorage.java:434)
at org.apache.pig.newplan.logical.relational.LOLoad.getSchemaFromMetaData(LOLoad.java:175)

1 ответ

Возникла та же проблема, и я думаю, это потому, что мы читаем двоичные данные avro, которые не совпадают с файлами AVRO.

Вы можете попробовать прочитать файлы с помощью инструментов avro, используя fragtojson

java -jar avro-tools-1.7.7.jar fragtojson part0.avro --schema-file schema.avsc

и посмотреть, как это работает! Опубликовать какие-либо выводы, если вам удастся прочитать это свинья.

Другие вопросы по тегам