kesalahan saat menulis aliran PubSub ke Cloud Storage menggunakan Dataflow

Menggunakan SCIO dari spotify untuk menulis pekerjaan untuk Dataflow , berikut 2 contoh mis.1 dan e .g2 untuk menulis aliran PubSub ke GCS, tetapi dapatkan kesalahan berikut untuk kode di bawah ini

Kesalahan

Exception in thread "main" java.lang.IllegalArgumentException: Write can only be applied to a Bounded PCollection 

Kode

object StreamingPubSub {
  def main(cmdlineArgs: Array[String]): Unit = {
// set up example wiring
val (opts, args) = ScioContext.parseArguments[ExampleOptions](cmdlineArgs)
val dataflowUtils = new DataflowExampleUtils(opts)
dataflowUtils.setup()

val sc = ScioContext(opts)


sc.pubsubTopic(opts.getPubsubTopic)
.timestampBy {
    _ => new Instant(System.currentTimeMillis() - (scala.math.random * RAND_RANGE).toLong)
  }
.withFixedWindows((Duration.standardHours(1)))
.groupBy(_ => Unit)
.toWindowed
.toSCollection
.saveAsTextFile(args("output"))


val result = sc.close()

// CTRL-C to cancel the streaming pipeline
    dataflowUtils.waitToFinish(result.internal)
  }
}

Saya mungkin mencampurkan konsep jendela dengan Bounded PCollection, apakah ada cara untuk mencapainya atau apakah saya perlu menerapkan beberapa perubahan untuk mewujudkannya, siapa pun dapat membantu dalam hal ini


person DAR    schedule 05.10.2016    source sumber


Jawaban (1)


Saya yakin saveAsTextFile SCIO di bawahnya menggunakan transformasi Write Dataflow, yang hanya mendukung PCollections terbatas. Dataflow belum menyediakan API langsung untuk menulis PCollection tanpa batas ke Google Cloud Storage, meskipun hal ini sedang kami selidiki.

Untuk mempertahankan PCollection tanpa batas di suatu tempat, pertimbangkan, misalnya, BigQuery, Datastore, atau Bigtable. Di API SCIO, Anda dapat menggunakan, misalnya, saveAsBigQuery.

person Davor Bonaci    schedule 05.10.2016
comment
Terima kasih atas tanggapan cepatnya - person DAR; 06.10.2016