Невозможно прочитать данные из потоковой передачи искры, подключив 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

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

1 ответ

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

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

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

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

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