Grafik tugas Dataflow

Antarmuka pemantauan Dataflow memberikan representasi grafis setiap tugas: grafik tugas. Grafik tugas juga memberikan ringkasan tugas, log tugas, dan informasi tentang setiap langkah dalam pipeline.

Untuk melihat grafik tugas, lakukan langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman Dataflow > Jobs.

    Buka Tugas

  2. Pilih lowongan.

  3. Klik tab Grafik tugas.

Grafik tugas pipeline menampilkan setiap transformasi dalam pipeline sebagai kotak. Setiap kotak berisi nama transformasi dan informasi tentang status tugas, yang mencakup hal berikut:

  • Berjalan: langkah sedang berjalan
  • Dalam antrean: langkah dalam tugas FlexRS sedang dalam antrean
  • Berhasil: langkah berhasil diselesaikan
  • Dihentikan: langkah dihentikan karena tugas dihentikan
  • Tidak diketahui: langkah gagal melaporkan status
  • Gagal: langkah gagal diselesaikan

Secara default, halaman grafik tugas menampilkan Tampilan grafik. Untuk melihat grafik tugas sebagai tabel, di Tampilan langkah tugas, pilih Tampilan tabel. Tampilan tabel berisi informasi yang sama dalam format yang berbeda. Tampilan tabel berguna dalam skenario berikut:

  • Tugas Anda memiliki banyak tahap, sehingga grafik tugas sulit dinavigasi.
  • Anda ingin mengurutkan langkah-langkah tugas berdasarkan properti tertentu. Misalnya, Anda dapat mengurutkan tabel berdasarkan waktu proses untuk mengidentifikasi langkah-langkah yang lambat.

Grafik tugas dasar

Kode Pipeline:

Java

  // Read the lines of the input text.
  p.apply("ReadLines", TextIO.read().from(options.getInputFile()))
     // Count the words.
     .apply(new CountWords())
     // Write the formatted word counts to output.
     .apply("WriteCounts", TextIO.write().to(options.getOutput()));

Python

(
    pipeline
    # Read the lines of the input text.
    | 'ReadLines' >> beam.io.ReadFromText(args.input_file)
    # Count the words.
    | CountWords()
    # Write the formatted word counts to output.
    | 'WriteCounts' >> beam.io.WriteToText(args.output_path))

Go

  // Create the pipeline.
  p := beam.NewPipeline()
    s := p.Root()
  // Read the lines of the input text.
  lines := textio.Read(s, *input)
  // Count the words.
  counted := beam.ParDo(s, CountWords, lines)
  // Write the formatted word counts to output.
  textio.Write(s, *output, formatted)
Grafik tugas:

Grafik eksekusi untuk pipeline WordCount seperti yang ditunjukkan di antarmuka pemantauan Dataflow.

Gambar 1: Kode pipeline untuk pipeline WordCount yang ditampilkan dengan grafik eksekusi yang dihasilkan di antarmuka pemantauan Dataflow.

Transformasi gabungan

Transformasi gabungan adalah transformasi yang berisi beberapa sub-transformasi bertingkat. Dalam grafik tugas, transformasi komposit dapat diluaskan. Untuk meluaskan transformasi dan melihat sub-transformasi, klik panah.

Kode Pipeline:

Java

  // The CountWords Composite Transform
  // inside the WordCount pipeline.

  public static class CountWords
    extends PTransform<PCollection<String>, PCollection<String>> {

    @Override
    public PCollection<String> apply(PCollection<String> lines) {

      // Convert lines of text into individual words.
      PCollection<String> words = lines.apply(
        ParDo.of(new ExtractWordsFn()));

      // Count the number of times each word occurs.
      PCollection<KV<String, Long>> wordCounts =
        words.apply(Count.<String>perElement());

      return wordCounts;
    }
  }

Python

# The CountWords Composite Transform inside the WordCount pipeline.
@beam.ptransform_fn
def CountWords(pcoll):
  return (
      pcoll
      # Convert lines of text into individual words.
      | 'ExtractWords' >> beam.ParDo(ExtractWordsFn())
      # Count the number of times each word occurs.
      | beam.combiners.Count.PerElement()
      # Format each word and count into a printable string.
      | 'FormatCounts' >> beam.ParDo(FormatCountsFn()))

Go

  // The CountWords Composite Transform inside the WordCount pipeline.
  func CountWords(s beam.Scope, lines beam.PCollection) beam.PCollection {
    s = s.Scope("CountWords")

    // Convert lines of text into individual words.
    col := beam.ParDo(s, &extractFn{SmallWordLength: *smallWordLength}, lines)

    // Count the number of times each word occurs.
    return stats.Count(s, col)
  }
Grafik tugas:

Grafik tugas untuk pipeline WordCount dengan transformasi CountWords yang diperluas
              untuk menampilkan transformasi komponennya.

Gambar 2: Kode pipeline untuk sub-langkah transformasi CountWords. Ditampilkan dengan grafik tugas yang diperluas untuk seluruh pipeline.

Dalam kode pipeline, Anda dapat menggunakan kode berikut untuk memanggil transformasi komposit:

result = transform.apply(input);

Transformasi gabungan yang dipanggil dengan cara ini menghilangkan nesting yang diharapkan dan mungkin tampak diperluas di antarmuka pemantauan Dataflow. Pipeline Anda juga dapat menghasilkan peringatan atau error tentang nama unik yang stabil pada waktu eksekusi pipeline.

Untuk menghindari masalah ini, panggil transformasi Anda menggunakan format yang direkomendasikan:

result = input.apply(transform);

Nama transformasi

Dataflow memiliki beberapa cara berbeda untuk mendapatkan nama transformasi yang ditampilkan dalam grafik tugas pemantauan. Nama transformasi digunakan di tempat yang dapat dilihat publik, termasuk antarmuka pemantauan Dataflow, file log, dan alat proses debug. Jangan gunakan nama transformasi yang menyertakan informasi identitas pribadi, seperti nama pengguna atau nama organisasi.

Java

  • Dataflow dapat menggunakan nama yang Anda tetapkan saat Anda menerapkan transformasi. Argumen pertama yang Anda berikan ke metode apply adalah nama transformasi Anda.
  • Dataflow dapat menyimpulkan nama transformasi, baik dari nama class, jika Anda membuat transformasi kustom, atau nama objek fungsi DoFn, jika Anda menggunakan transformasi inti seperti ParDo.

Python

  • Dataflow dapat menggunakan nama yang Anda tetapkan saat Anda menerapkan transformasi. Anda dapat menetapkan nama transformasi dengan menentukan argumen label transformasi.
  • Dataflow dapat menyimpulkan nama transformasi, baik dari nama class, jika Anda membuat transformasi kustom, atau nama objek fungsi DoFn, jika Anda menggunakan transformasi inti seperti ParDo.

Go

  • Dataflow dapat menggunakan nama yang Anda tetapkan saat Anda menerapkan transformasi. Anda dapat menetapkan nama transformasi dengan menentukan Scope.
  • Dataflow dapat menyimpulkan nama transformasi, baik dari nama struct jika Anda menggunakan DoFn struktural atau dari nama fungsi jika Anda menggunakan DoFn fungsional.

Melihat informasi langkah

Saat Anda mengklik langkah dalam grafik tugas, panel Info Langkah akan menampilkan informasi yang lebih mendetail tentang langkah tersebut. Untuk mengetahui informasi selengkapnya, lihat Informasi langkah tugas.