Невозможно прочитать данные из потоковой передачи искры, соединяющей Kinesis.

Я написал ниже код для подключения к kinesis из потоковой передачи искры, но данные не были получены.

val kinesisStream = KinesisUtils.createStream(ssc, appName, streamName, endpointUrl, regionName, InitialPositionInStream.LATEST, batchInterval , StorageLevel.MEMORY_AND_DISK_2)

kinesisStream.print() // nothing getting printed here 

val data = kinesisStream.flatMap(byteArray => new String(byteArray))

data.foreachRDD { rdd =>          
      println("data==" + rdd.collect().length) // no data here too
      rdd.collect()//.saveAsTextFile("file:///home/myHome/Code/sample/somedata.txt");          
    }

Я пытался писать в S3 и в файловую систему, он пишет имя файла по папке, а внутри я вижу только файл _SUCCESS, который имеет нулевой байт.

кстати, я могу писать в тот же поток kinesis и читать данные из java

в чем здесь проблема.


person Mohan    schedule 01.12.2016    source источник
comment
Вы нашли решение?   -  person ArunDhaJ    schedule 25.01.2017


Ответы (1)


Я получил решение для этого вопроса.

Код может извлекать данные из kinesis. вместе с данными он также генерировал множество файлов частей с нулевым байтом. поскольку файлы части данных потокового приложения генерируются для заданного интервала, следовательно, если данные недоступны для этого интервала, он генерирует файлы с нулевыми байтами.

Добавьте проверку для удаления пустых файлов деталей в коде DF, чтобы DF мог записывать только те файлы деталей, в которых есть данные.

Мы начали получать данные после этих изменений.

person Mohan    schedule 14.03.2017
comment
Что вы имеете в виду под ДФ? - person gunererd; 03.07.2018