2016-12-01 8 views
0

スパークストリーミングからキネシスに接続するためのコードを書きましたが、データが受信されていません。スパークストリーミング接続からデータを読み取ることができません

ヴァルkinesisStream = KinesisUtils.createStream(SSC、appNameは、さstreamName、エンドポイントURL、regionName、InitialPositionInStream.LATEST、batchInterval、StorageLevel.MEMORY_AND_DISK_2)私は、それをS3に書き込むために、システムを提出する試み

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");   
    } 

ファイル名をフォルダ単位で書き込み、側に_SUCCESSファイルのみが表示されます。これは0バイトです。

ところで、私は同じキネシスストリームに書き込み、ここでの問題が何であるかのjava

からデータを読み取ることができることができます。

+0

解決策は見つかりましたか? – ArunDhaJ

答えて

0

私はこの質問の解決策を得ました。

コードはキネシスからデータを引き出すことができました。データとともに、ゼロバイトの部分ファイルをたくさん生成しました。ストリーミングアプリケーションデータパーツファイルが所定の間隔で生成されるため、その間隔で利用できないデータがゼロバイトのファイルを生成した場合です。

DFコードで空のパーツファイルを削除するチェックを追加すると、DFはデータを含むパーツファイルのみを書き込むことができます。

この変更後にデータを取得し始めました。

関連する問題