Rumah > pembangunan bahagian belakang > Tutorial Python > Cara Memanggil Fungsi Java/Scala dari Dalam Tugas Spark

Cara Memanggil Fungsi Java/Scala dari Dalam Tugas Spark

Mary-Kate Olsen
Lepaskan: 2024-10-21 14:56:30
asal
1070 orang telah melayarinya

How to Call Java/Scala Functions from Within a Spark Task

Memanggil fungsi Java/Scala dari dalam tugas Spark

Latar Belakang

Apabila menggunakan Scala, gunakan DecisionTreeModel.predict sebagai sebahagian daripada peta transformasi boleh menyebabkan pengecualian. Sebab untuk ini adalah berkaitan dengan panggilan ke kaedah JavaModelWrapper.call.

Memahami isu

JavaModelWrapper.call memerlukan akses kepada SparkContext, yang, dalam konteks PySpark, berjalan pada pemandu. Walau bagaimanapun, transformasi peta berjalan pada nod pekerja, dan oleh itu memanggil JavaModelWrapper.call dari dalam peta adalah tidak dibenarkan.

Penyelesaian menggunakan Java UDF

Satu penyelesaian ialah merangkum kod Java sebagai pengguna -fungsi yang ditentukan (UDF) dan gunakannya dalam Spark SQL. Ini mengelakkan isu memanggil kod Java dari dalam tugas Python. Walau bagaimanapun, penyelesaian ini memerlukan penukaran data antara Python dan Scala dan memperkenalkan kerumitan tambahan.

Penyelesaian menggunakan Java Service Wrappers

Pilihan lain ialah membuat pembungkus perkhidmatan Java tersuai yang menyediakan antara muka kepada kod Java daripada Python. Pembalut ini boleh didaftarkan dengan Py4j dan diakses menggunakan org.apache.spark.api.java.JavaRDD.withContext untuk mendapatkan akses kepada SparkContext.

Kesimpulan

Sementara penyelesaian seperti Java UDF dan Pembalut perkhidmatan Java menyediakan penyelesaian untuk memanggil fungsi Java/Scala dari dalam tugas Spark, adalah penting untuk mempertimbangkan overhed dan pengehadan yang berkaitan dengan setiap pendekatan sebelum memilih penyelesaian terbaik untuk kes penggunaan khusus anda.

Atas ialah kandungan terperinci Cara Memanggil Fungsi Java/Scala dari Dalam Tugas Spark. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan