无法从连接Kinesis的火花流中读取数据

时间:2016-12-01 16:58:21

标签: spark-streaming amazon-kinesis amazon-kinesis-kpl

我已经编写了以下代码来连接来自spark streaming的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 个答案:

答案 0 :(得分:0)

我得到了这个问题的解决方案。

代码可以从kinesis中提取数据。与数据一起,它还生成了许多零字节部分文件。因为它的流应用程序数据部分文件是在给定的时间间隔内生成的,因此如果数据在该时间间隔内不可用,则它生成零字节文件。

添加一项检查以删除DF代码中的空零件文件,以便DF只能写入包含数据的零件文件。

我们在此更改后开始获取数据。