Memanggil Fungsi Java/Scala daripada Tugas PySpark
Dalam PySpark, memanfaatkan fungsi yang dilaksanakan dalam Java atau Scala boleh menimbulkan cabaran. Walaupun API Scala menyediakan penyelesaian yang disyorkan untuk memanggil DecisionTreeModel.predict, penyelesaian yang lebih umum dicari.
Konteks Teknikal
Isu timbul apabila memanggil fungsi Java daripada PySpark tugasan, khususnya disebabkan penglibatan JavaModelWrapper.call. Kaedah ini cuba mengakses SparkContext, yang tidak tersedia dalam kod pekerja.
Penyelesaian Elegan
Penyelesaian elegan kekal sukar difahami. Dua pilihan wajaran tinggi wujud:
- Melanjutkan kelas Spark melalui penukaran atau pembalut tersirat
- Penggunaan terus gerbang Py4j
Pendekatan Alternatif
Sebaliknya, pertimbangkan pendekatan alternatif:
-
Menggunakan Spark SQL Data Sources API: Balut kod JVM, tetapi dengan pelaksanaan bertele-tele dan skop input terhad.
-
Beroperasi pada DataFrames dengan Scala UDF: Laksanakan kod kompleks pada DataFrames, mengelakkan penukaran data Python/Scala tetapi memerlukan akses Py4j.
-
Mencipta Antara Muka Scala: Bina antara muka Scala untuk pelaksanaan kod arbitrari, menawarkan fleksibiliti tetapi memerlukan butiran pelaksanaan peringkat rendah dan penukaran data.
-
Alat Pengurusan Aliran Kerja Luaran: Beralih antara kerja Python/Scala dan hantar data melalui Sistem Fail Teragih (DFS), mengelakkan penukaran data tetapi menanggung kos I/O.
-
Konteks SQL Dikongsi: Lulus data antara bahasa tetamu melalui jadual sementara, dioptimumkan untuk analisis interaktif tetapi tidak sesuai untuk kelompok pekerjaan.
Atas ialah kandungan terperinci Bolehkah Anda Memanggil Fungsi Java/Scala daripada Tugasan PySpark?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!