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