Halaman ini menunjukkan cara menyelesaikan masalah terkait Cloud Data Fusion.
Memecahkan masalah pipeline batch
Saran berikut ditujukan untuk pipeline batch.
Error pipeline: File teks sedang digunakan
Error berikut terjadi saat Anda menjalankan pipeline batch, sehingga menyebabkan kegagalan:
error=26, Text file busy
Rekomendasi
Untuk mengatasi masalah ini, siapkan pemicu yang otomatis mencoba kembali pipeline saat gagal.
- Hentikan pipeline.
- Buat pemicu. Dalam hal ini, saat Anda memilih peristiwa yang akan dieksekusi, pilih Gagal. Untuk mengetahui informasi selengkapnya, lihat Membuat pemicu masuk di pipeline downstream.
- Mulai pipeline.
Pipeline serentak macet
Di Cloud Data Fusion, menjalankan banyak pipeline batch serentak 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 serentak, antarmuka web dapat menjadi lambat atau tidak responsif. Masalah ini terjadi karena beberapa permintaan UI yang dibuat ke pengendali HTTP di backend.
Rekomendasi
Untuk mengatasi masalah ini, kontrol jumlah permintaan baru menggunakan kontrol alur Cloud Data Fusion, yang tersedia di instance yang berjalan di versi 6.6 dan yang lebih baru.
Koneksi SSH habis waktunya saat pipeline berjalan
Error berikut terjadi saat Anda menjalankan pipeline batch:
`java.io.IOException: com.jcraft.jsch.JSchException:
java.net.ConnectException: Connection timed out (Connection timed out)`
Rekomendasi
Untuk mengatasi error, periksa masalah berikut:
- Periksa apakah ada aturan firewall yang tidak ada (biasanya port 22). Untuk membuat aturan firewall baru, lihat Konfigurasi jaringan cluster Dataproc
- Pastikan bahwa penegak Compute Engine mengizinkan koneksi antara instance Cloud Data Fusion dan cluster Dataproc.
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`
Rekomendasi
Untuk mengatasi error ini, Anda harus memberikan peran Cloud Data Fusion Runner (roles/datafusion.runner
) ke akun layanan yang digunakan oleh Dataproc.
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
- Penampung 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 dalam 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
Rekomendasi
Untuk mengatasi masalah ini, berikan peran yang tidak ada ke project (PROJECT_ID) yang Anda tentukan dalam plugin:
Untuk menjalankan tugas BigQuery, berikan peran BigQuery Job User (
roles/bigquery.jobUser
).Untuk membaca set data BigQuery, berikan peran BigQuery Data Viewer (
roles/bigquery.dataViewer
).Untuk membuat bucket sementara, berikan peran Storage Admin (
roles/storage.admin
).Untuk membuat set data atau tabel BigQuery, berikan peran BigQuery Data Editor (
roles/bigquery.dataEditor
).
Untuk mengetahui informasi selengkapnya, lihat dokumentasi pemecahan masalah plugin (Pemecahan Masalah Multi-Tabel Sink Google BigQuery).
Pipeline tidak berhenti pada nilai minimum error
Pipeline mungkin tidak berhenti setelah beberapa error, meskipun Anda menetapkan nilai minimum error
ke 1
.
Batas error ditujukan untuk pengecualian yang diangkat dari perintah jika terjadi kegagalan yang tidak ditangani. Jika perintah sudah menggunakan emitError API, nilai minimum error tidak akan diaktifkan.
Rekomendasi
Untuk mendesain pipeline yang gagal saat nilai minimum tertentu terpenuhi, gunakan
perintah FAIL
.
Setiap kali kondisi yang diteruskan ke perintah FAIL
terpenuhi, kondisi tersebut akan dihitung
terhadap nilai minimum error dan pipeline akan gagal setelah nilai minimum
tercapai.
Plugin sumber batch Oracle mengonversi NUMBER
menjadi string
Di sumber batch Oracle versi 1.9.0, 1.8.3, dan yang lebih lama, jenis data NUMBER
Oracle, dengan presisi dan skala yang tidak ditentukan, dipetakan ke jenis data decimal(38,0)
CDAP.
Versi plugin 1.9.1, 1.8.4, dan 1.8.5 tidak kompatibel dengan versi sebelumnya, dan pipeline
yang menggunakan versi sebelumnya mungkin tidak berfungsi setelah diupgrade ke versi 1.9.1,
1.8.5, dan 1.8.4, jika tahap downstream dalam pipeline mengandalkan skema
output sumber karena skema output telah berubah. Jika ada
skema output yang ditentukan untuk jenis data NUMBER
Oracle yang ditentukan tanpa
presisi dan skala dalam versi plugin sebelumnya, setelah mengupgrade ke versi
1.9.1, 1.8.5, atau 1.8.4, plugin sumber batch Oracle akan menampilkan error
ketidakcocokan skema berikut untuk jenis: Schema field '<field name>' is expected to
have type 'decimal with precision <precision> and scale <scale> but found
'string'. Change the data type of field <field name> to string.
Versi 1.9.1, 1.8.5, dan 1.8.4 akan berfungsi dengan skema output jenis data string
CDAP untuk jenis data NUMBER
Oracle yang ditentukan tanpa presisi dan skala. Jika ada jenis data NUMBER
Oracle yang ditentukan tanpa presisi dan skala yang ada dalam skema output sumber Oracle, sebaiknya jangan gunakan plugin Oracle versi lama karena dapat menyebabkan error pembulatan.
Kasus khusus adalah saat Anda menggunakan makro untuk nama database, nama skema, atau
nama tabel, dan jika Anda belum menentukan skema output secara manual. Skema
akan terdeteksi dan dipetakan saat runtime. Versi lama plugin sumber batch Oracle
memetakan jenis data NUMBER
Oracle yang ditentukan tanpa presisi dan
skala ke jenis data decimal(38,0)
CDAP, sedangkan versi 1.9.1, 1.8.5, dan
1.8.4 dan yang lebih baru memetakan jenis data ke string
saat runtime.
Rekomendasi
Untuk mengatasi kemungkinan masalah kehilangan presisi saat menggunakan jenis data NUMBER
Oracle dengan presisi dan skala yang tidak ditentukan, upgrade pipeline Anda untuk menggunakan plugin sumber batch Oracle versi 1.9.1, 1.8.5, atau 1.8.4.
Setelah upgrade, jenis data NUMBER
Oracle yang ditentukan tanpa presisi dan skala dipetakan ke jenis data string
CDAP saat runtime. Jika Anda memiliki
tahap atau sink downstream yang menggunakan jenis data decimal
CDAP asli (yang
dipetakan jenis data NUMBER
Oracle yang ditentukan tanpa presisi dan skala), perbarui atau harapkan untuk menggunakan data string.
Jika Anda memahami risiko kemungkinan kehilangan data karena error pembulatan, tetapi memilih untuk menggunakan jenis data Oracle NUMBER yang ditentukan tanpa presisi dan skala sebagai jenis data CDAP decimal(38,0)
, deploy plugin Oracle versi 1.8.6 (untuk Cloud Data Fusion 6.7.3) atau 1.9.2 (untuk Cloud Data Fusion 6.8.1) dari Hub, lalu perbarui pipeline untuk menggunakannya.
Untuk informasi selengkapnya, lihat referensi Oracle Batch Source.
Menghapus cluster Dataproc efemeral
Saat Cloud Data Fusion membuat cluster Dataproc efemeral selama penyediaan operasi pipeline, cluster akan dihapus setelah operasi 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 Ada Aktivitas Maksimum
Untuk mengatasi masalah ini, konfigurasikan opsi Max Idle Time
. Hal ini memungkinkan Dataproc 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, tetapkan 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 sudah tidak berlaku secara manual:
Dapatkan setiap project ID tempat cluster dibuat:
Dalam argumen runtime pipeline, periksa apakah project ID Dataproc disesuaikan untuk dijalankan.
Jika project ID Dataproc tidak ditentukan secara eksplisit, tentukan penyedia yang digunakan, lalu periksa project ID:
Dalam argumen runtime pipeline, periksa nilai
system.profile.name
.Buka setelan penyedia dan periksa apakah project ID Dataproc ditetapkan. Jika setelan tidak ada atau kolom kosong, project tempat instance Cloud Data Fusion berjalan akan digunakan.
Untuk setiap project:
Buka project di konsol Google Cloud, lalu buka halaman Cluster Dataproc.
Urutkan cluster berdasarkan tanggal pembuatannya, dari yang terlama ke terbaru.
Jika panel info disembunyikan, klik Tampilkan panel info dan buka tab Label.
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 pipeline tersebut dibuat oleh Cloud Data Fusion.
Pilih kotak centang berdasarkan nama cluster, lalu klik Hapus.
Tidak dapat membuat instance Cloud Data Fusion
Saat membuat instance Cloud Data Fusion, Anda mungkin mengalami masalah berikut:
Read access to project PROJECT_NAME was denied.
Rekomendasi
Untuk mengatasi masalah ini, nonaktifkan dan aktifkan kembali Cloud Data Fusion API. Kemudian, buat instance.
Pipeline gagal saat dijalankan di cluster Dataproc dengan pekerja utama atau sekunder
Di Cloud Data Fusion versi 6.8 dan 6.9, masalah terjadi yang menyebabkan pipeline gagal jika dijalankan di cluster Dataproc:
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.
Rekomendasi
Untuk mengatasi masalah ini,
upgrade ke revisi
patch 6.8.3.1
, 6.9.2.1
, atau yang lebih baru.