Memecahkan masalah pipeline batch Cloud Data Fusion

Halaman ini menunjukkan cara menyelesaikan masalah pada pipeline batch Cloud Data Fusion.

Error pipeline: File teks sedang digunakan

Error berikut terjadi saat Anda menjalankan pipeline batch, sehingga menyebabkan kegagalan:

error=26, Text file busy

Untuk mengatasi masalah ini, siapkan pemicu yang otomatis mencoba lagi pipeline saat gagal.

  1. Hentikan pipeline.
  2. Membuat pemicu. Dalam hal ini, saat Anda memilih peristiwa untuk dieksekusi, pilih Gagal. Untuk mengetahui informasi selengkapnya, lihat Membuat pemicu inbound di pipeline downstream.
  3. Mulai pipeline.

Pipeline serentak macet

Di Cloud Data Fusion, menjalankan banyak pipeline batch secara bersamaan dapat membebani instance, sehingga menyebabkan tugas macet dalam status Starting, Provisioning, atau Running. Akibatnya, pipeline tidak dapat dihentikan melalui antarmuka web atau panggilan API. Jika Anda menjalankan banyak pipeline secara bersamaan, antarmuka web dapat menjadi lambat atau tidak responsif. Masalah ini terjadi karena beberapa permintaan UI yang dibuat ke handler HTTP di backend.

Untuk mengatasi masalah ini, kontrol jumlah permintaan baru menggunakan kontrol alur Cloud Data Fusion.

Waktu koneksi SSH habis saat menjalankan pipeline

Error berikut terjadi saat Anda menjalankan pipeline batch:

java.io.IOException: com.jcraft.jsch.JSchException:
java.net.ConnectException: Connection timed out (Connection timed out)

Untuk mengatasi masalah ini, lakukan langkah berikut:

Kode respons: 401. Error: error tidak diketahui

Error berikut terjadi saat Anda menjalankan pipeline batch:

java.io.IOException: Failed to send message for program run program_run:
Response code: 401. Error: unknown error

Untuk mengatasi masalah ini, Anda harus memberikan peran Cloud Data Fusion Runner (roles/datafusion.runner) ke akun layanan yang digunakan oleh Managed Service for Apache Spark.

Pipeline dengan plugin BigQuery gagal dengan error Access Denied

Ada masalah umum saat pipeline gagal dengan error Access Denied saat menjalankan tugas BigQuery. Hal ini memengaruhi pipeline yang menggunakan plugin berikut:

  • Sumber BigQuery
  • Sink BigQuery
  • Tujuan BigQuery Multi Table
  • Pushdown Transformasi

Contoh error dalam log (mungkin berbeda bergantung pada plugin yang Anda gunakan):

POST https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT_ID/jobs
{
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "Access Denied: Project xxxx: User does not have bigquery.jobs.create permission in project PROJECT_ID",
"reason" : "accessDenied"
} ],
"message" : "Access Denied: Project PROJECT_ID: User does not have bigquery.jobs.create permission in project PROJECT_ID.",
"status" : "PERMISSION_DENIED"
}

Dalam contoh ini, PROJECT_ID adalah project ID yang Anda tentukan di plugin. Akun layanan untuk project yang ditentukan dalam plugin tidak memiliki izin untuk melakukan setidaknya salah satu hal berikut:

  • Menjalankan tugas BigQuery
  • Membaca set data BigQuery
  • Membuat bucket sementara
  • Membuat set data BigQuery
  • Membuat tabel BigQuery

Untuk mengatasi masalah ini, berikan peran yang tidak ada ke project (PROJECT_ID) yang Anda tentukan di plugin:

Untuk mengetahui informasi selengkapnya, lihat dokumentasi pemecahan masalah plugin (Pemecahan Masalah Multi Table Sink Google BigQuery).

Pipeline tidak berhenti pada batas error

Pipeline mungkin tidak berhenti setelah beberapa error, meskipun Anda menetapkan batas error ke 1.

Nilai minimum error ditujukan untuk pengecualian apa pun yang muncul dari direktif jika terjadi kegagalan yang tidak ditangani. Jika direktif sudah menggunakan emitError API, maka batas error tidak diaktifkan.

Untuk mendesain pipeline yang gagal saat nilai minimum tertentu tercapai, gunakan perintah FAIL.

Setiap kali kondisi yang diteruskan ke direktif FAIL terpenuhi, kondisi tersebut akan dihitung terhadap batas error dan pipeline akan gagal setelah batas tercapai.

Menghapus cluster Managed Service for Apache Spark sementara

Saat Cloud Data Fusion membuat cluster Managed Service for Apache Spark sementara selama penyediaan eksekusi pipeline, cluster akan dihapus setelah eksekusi pipeline selesai. Dalam kasus yang jarang terjadi, penghapusan cluster gagal.

Sangat direkomendasikan: Upgrade ke versi Cloud Data Fusion terbaru untuk memastikan pemeliharaan cluster yang tepat.

Menetapkan Waktu Tidak Aktif Maksimum

Untuk mengatasi masalah ini, konfigurasi opsi Max Idle Time. Hal ini memungkinkan Managed Service for Apache Spark menghapus cluster secara otomatis, meskipun panggilan eksplisit pada penyelesaian pipeline gagal.

Max Idle Time tersedia di Cloud Data Fusion versi 6.4 dan yang lebih baru.

Direkomendasikan: Untuk versi sebelum 6.6, setel Max Idle Time secara manual ke 30 menit atau lebih.

Menghapus cluster secara manual

Jika Anda tidak dapat mengupgrade versi atau mengonfigurasi opsi Max Idle Time, hapus cluster yang tidak aktif secara manual:

  1. Dapatkan setiap project ID tempat cluster dibuat:

    1. Di argumen runtime pipeline, periksa apakah project ID Managed Service for Apache Spark disesuaikan untuk run.

      Periksa apakah project ID Dataproc disesuaikan untuk proses berjalan

    2. Jika ID project Managed Service for Apache Spark tidak ditentukan secara eksplisit, tentukan penyedia yang digunakan, lalu periksa ID project:

      1. Di argumen runtime pipeline, periksa nilai system.profile.name.

        Mendapatkan nama penyedia dalam argumen runtime

      2. Buka setelan penyedia dan periksa apakah ID project Managed Service for Apache Spark telah ditetapkan. Jika setelan tidak ada atau kolom kosong, project tempat instance Cloud Data Fusion berjalan akan digunakan.

  2. Untuk setiap project:

    1. Buka project di konsol Google Cloud , lalu buka halaman Managed Service for Apache Spark Clusters.

      Buka Cluster

    2. Urutkan cluster berdasarkan tanggal pembuatannya, dari yang terlama hingga yang terbaru.

    3. Jika panel info disembunyikan, klik Tampilkan panel info dan buka tab Label.

    4. Untuk setiap cluster yang tidak digunakan—misalnya, lebih dari satu hari telah berlalu—periksa apakah cluster tersebut memiliki label versi Cloud Data Fusion. Hal ini menunjukkan bahwa file tersebut dibuat oleh Cloud Data Fusion.

    5. Pilih kotak centang di samping nama cluster, lalu klik Hapus.

Pipeline gagal saat dijalankan di cluster Managed Service for Apache Spark dengan worker primer atau sekunder

Di Cloud Data Fusion versi 6.8 dan 6.9, terjadi masalah yang menyebabkan pipeline gagal jika dijalankan di cluster Managed Service for Apache Spark:

ERROR [provisioning-task-2:i.c.c.i.p.t.ProvisioningTask@161] - PROVISION task failed in REQUESTING_CREATE state for program run program_run:default.APP_NAME.UUID.workflow.DataPipelineWorkflow.RUN_ID due to
Caused by: io.grpc.StatusRuntimeException: CANCELLED: Failed to read message.
Caused by: com.google.protobuf.GeneratedMessageV3$Builder.parseUnknownField(Lcom/google/protobuf/CodedInputStream;Lcom/google/protobuf/ExtensionRegistryLite;I)Z.

Untuk mengatasi masalah ini, upgrade ke revisi patch 6.8.3.1, 6.9.2.1, atau yang lebih baru.

Plugin Cloud Storage gagal secara berkala dengan ekspresi reguler di Managed Service for Apache Spark 2.0

Pipeline mungkin gagal secara berkala di Cloud Data Fusion versi 6.10.1 saat plugin Cloud Storage menggunakan pola ekspresi reguler * di jalur dan lingkungan eksekusinya adalah Managed Service for Apache Spark 2.0.

Untuk mengatasi masalah ini, lakukan salah satu tindakan berikut:

  • Update image Managed Service for Apache Spark ke versi 2.1 atau yang lebih baru.
  • Kembali ke versi plugin Cloud Storage sebelumnya.
  • Tingkatkan memori yang dialokasikan untuk eksekutor Managed Service for Apache Spark.

Pipeline gagal dengan NoSuchMethodError di Managed Service for Apache Spark 2.2

Di Cloud Data Fusion versi 6.10.1.1 dan yang lebih baru, pipeline mungkin gagal dengan error berikut saat berjalan di Managed Service for Apache Spark 2.2:

java.lang.NoSuchMethodError: 'org.apache.spark.sql.catalyst.encoders.ExpressionEncoder
org.apache.spark.sql.catalyst.encoders.RowEncoder.apply(org.apache.spark.sql.types.StructType)'

Untuk mengatasi masalah ini, lakukan salah satu tindakan berikut:

Plugin Multiple database tables gagal jika Nama Referensi berisi spasi

Di Cloud Data Fusion versi 6.10.1 dan yang lebih baru, pipeline yang menggunakan sumber batch Beberapa tabel database mungkin gagal jika kolom Nama Referensi berisi karakter spasi.

Untuk mengatasi masalah ini, update plugin Multiple database tables ke versi 1.4.1 atau yang lebih baru dari Hub. Versi yang diperbarui tidak mengizinkan spasi di kolom Nama Referensi.