Bagikan melalui


Memecahkan masalah kesalahan penginstalan pustaka

Untuk membuat pihak ketiga atau kode yang dibuat secara lokal tersedia untuk aplikasi Anda, Anda dapat memasang pustaka ke salah satu kumpulan Apache Spark tanpa server Anda. Paket yang tercantum dalam file requirements.txt diunduh dari PyPi pada saat startup pool. File persyaratan ini digunakan setiap kali instans Spark dibuat dari kumpulan Spark tersebut. Setelah pustaka terpasang untuk kumpulan Spark, pustaka tersedia untuk semua sesi yang menggunakan kumpulan yang sama.

Dalam beberapa kasus, Anda mungkin menemukan bahwa pustaka tidak muncul di kumpulan Apache Spark Anda. Kasus ini sering terjadi ketika ada kesalahan dalam pustaka atau requirements.txt yang disediakan. Ketika terjadi kesalahan dalam proses penginstalan pustaka, kumpulan Apache Spark akan kembali ke pustaka yang ditentukan dalam runtime bahasa umum basis Synapse.

Tujuan dari dokumen ini adalah untuk memberikan masalah umum dan membantu Anda men-debug kesalahan penginstalan pustaka.

Paksa perbarui kumpulan Apache Spark Anda

Ketika Anda memperbarui pustaka di kumpulan Apache Spark Anda, perubahan ini akan diambil setelah kumpulan dimulai ulang. Jika Anda memiliki pekerjaan aktif, pekerjaan ini akan terus berjalan pada versi asli dari kumpulan spark.

Anda dapat memaksa perubahan diterapkan dengan memilih opsi untuk Paksa pengaturan baru. Pengaturan ini akan mengakhiri semua sesi saat ini untuk kumpulan Spark yang dipilih. Setelah sesi berakhir, Anda harus menunggu kumpulan dihidupkan kembali.

Tambahkan pustaka Python

Lacak progres penginstalan

Pekerjaan Spark yang dipesan sistem dimulai setiap kali kumpulan diperbarui dengan serangkaian pustaka baru. Pekerjaan Spark ini membantu memantau status penginstalan pustaka. Jika penginstalan gagal karena konflik pustaka atau masalah lain, kumpulan Spark akan kembali ke status sebelumnya atau default.

Selain itu, pengguna juga dapat memeriksa log pengguna untuk mengidentifikasi konflik dependensi atau melihat pustaka mana yang dipasang selama pembaruan kumpulan.

Untuk melihat log ini:

  1. Navigasi ke daftar aplikasi Spark di tab Pantau.
  2. Pilih pekerjaan aplikasi Spark sistem yang sesuai dengan pembaruan kumpulan Anda. Pekerjaan sistem ini dijalankan dengan nama SystemReservedJob-LibraryManagement. Cuplikan layar yang menyoroti pekerjaan pustaka yang dipesan sistem.
  3. Beralih untuk melihat log driver dan log stdout.
  4. Di dalam hasil, Anda akan melihat log yang terkait dengan penginstalan paket Anda. Cuplikan layar yang menyoroti hasil pekerjaan pustaka yang dipesan pustaka.

Lacak kegagalan penginstalan

Dalam kasus tertentu, pengguna juga dapat memeriksa log penginstalan lengkap yang tersedia di Spark History Server untuk mengidentifikasi konflik dependensi yang rumit. Log yang tersedia melalui Spark UI dapat dipotong dan mengakses log penginstalan penuh melalui Spark History Server akan berguna dalam skenario penginstalan pustaka yang kompleks.

Untuk melihat log penginstalan lengkap:

  1. Navigasi ke daftar aplikasi Spark di tab Pantau.
  2. Pilih tugas aplikasi Spark sistem yang sesuai dengan pembaruan kumpulan Anda. Pekerjaan sistem ini dijalankan dengan nama SystemReservedJob-LibraryManagement. Cuplikan layar yang menyoroti pekerjaan pustaka cadangan sistem yang gagal.
  3. Pilih opsi server riwayat Spark yang disorot yang akan membuka halaman detail server riwayat Spark di tab baru.Cuplikan layar yang menyorot detail pekerjaan pustaka cadangan sistem yang gagal.
  4. Di halaman ini, Anda akan melihat 2 upaya, pilih Upaya 1 seperti yang ditunjukkan di bawah ini. Cuplikan layar yang menyorot detail pelaksana di halaman server riwayat spark untuk pekerjaan pustaka cadangan sistem yang gagal.
  5. Pada bilah navigasi atas di halaman server riwayat Spark, beralihlah ke tab Pelaksana . Cuplikan layar yang menyorot detail pekerjaan di halaman server riwayat spark untuk pekerjaan pustaka cadangan sistem yang gagal.
  6. Unduh file log stdout dan stderr untuk mengakses output manajemen pustaka lengkap dan log kesalahan. Cuplikan layar yang menyoroti halaman server riwayat spark untuk pekerjaan pustaka cadangan sistem yang gagal.

Validasi izin Anda

Untuk memasang dan memperbarui pustaka, Anda harus memiliki izin Kontributor Data Blob Penyimpanan atau Pemilik Data Blob Penyimpanan di akun Azure Data Lake Storage Gen2 utama yang ditautkan ke ruang kerja Azure Synapse Analytics.

Untuk memvalidasi bahwa Anda memiliki izin ini, Anda bisa menjalankan kode berikut:

from pyspark.sql.types import StructType,StructField, StringType, IntegerType
data2 = [("James","Smith","Joe","4355","M",3000),
    ("Michael","Rose","Edward","40288","F",4000)
  ]

schema = StructType([ \
    StructField("firstname",StringType(),True), \
    StructField("middlename",StringType(),True), \
    StructField("lastname",StringType(),True), \
    StructField("id", StringType(), True), \
    StructField("gender", StringType(), True), \
    StructField("salary", IntegerType(), True) \
  ])
 
df = spark.createDataFrame(data=data2,schema=schema)

df.write.csv("abfss://<<ENTER NAME OF FILE SYSTEM>>@<<ENTER NAME OF PRIMARY STORAGE ACCOUNT>>.dfs.core.windows.net/validate_permissions.csv")

Jika Anda menerima kesalahan, Anda kemungkinan tidak memiliki izin yang diperlukan. Untuk mempelajari cara mendapatkan izin yang diperlukan, kunjungi dokumen ini: Tetapkan Kontributor Data Blob Penyimpanan atau izin Pemilik Data Blob Penyimpanan.

Selain itu, jika Anda menjalankan Alur, maka Workspace MSI harus memiliki izin Pemilik Data Blog Penyimpanan atau Kontributor Data Blob Penyimpanan juga. Untuk mempelajari cara memberikan izin ini pada identitas ruang kerja Anda, kunjungi: Berikan izin ke identitas terkelola ruang kerja.

Periksa file konfigurasi lingkungan

File konfigurasi lingkungan dapat digunakan untuk memutakhirkan lingkungan Conda. Format file yang dapat diterima untuk manajemen kumpulan Python tercantum di Spesifikasi Lingkungan.

Penting untuk dicatat pembatasan berikut:

  • Konten file persyaratan tidak boleh menyertakan baris atau karakter kosong tambahan.
  • Synapse Runtime mencakup set pustaka yang telah dipasang sebelumnya ke setiap kumpulan Apache Spark tanpa server. Paket yang telah dipasang sebelumnya ke runtime bahasa umum dasar tidak dapat dihapus atau dicopot.
  • Mengubah versi PySpark, Python, Scala/Java, .NET, atau Spark tidak didukung.
  • Pustaka dengan cakupan sesi Python hanya menerima file dengan ekstensi YML.

Validasi file roda

Kumpulan Apache Spark tanpa server Synapse didasarkan pada distribusi Linux. Saat mengunduh dan memasang file Wheel langsung dari PyPI, pastikan untuk memilih versi yang dibangun di Linux dan berjalan pada versi Python yang sama dengan kumpulan Spark.

Penting

Paket kustom dapat ditambahkan atau dimodifikasi di antara sesi. Namun, Anda harus menunggu kumpulan dan sesi dimulai ulang untuk melihat paket yang diperbarui.

Periksa konflik dependensi

Secara umum, resolusi dependensi Python bisa menjadi sulit untuk dikelola. Untuk membantu debug konflik dependensi secara lokal, Anda dapat membuat lingkungan virtual Anda sendiri yang didasarkan pada Synapse Runtime dan memvalidasi perubahan Anda.

Untuk menciptakan kembali lingkungan dan memvalidasi pembaruan Anda:

  1. Unduh templat untuk membuat ulang runtime bahasa umum Synapse secara lokal. Mungkin terdapat sedikit perbedaan antara templat dan lingkungan Synapse yang sebenarnya.

  2. Buat lingkungan virtual menggunakan instruksi berikut. Lingkungan ini memungkinkan Anda membuat penginstalan Python terisolasi dengan daftar pustaka yang ditentukan.

    conda myenv create -f environment.yml
    conda activate myenv
    
  3. Gunakan pip install -r <provide your req.txt file> untuk memperbarui lingkungan virtual dengan paket yang Anda tentukan. Jika penginstalan menghasilkan kesalahan, maka mungkin ada konflik antara apa yang telah dipasang sebelumnya dalam runtime basis Synapse dan apa yang ditentukan dalam file persyaratan yang disediakan. Konflik dependensi ini harus diselesaikan untuk mendapatkan pustaka yang diperbarui di kumpulan Apache Spark tanpa server Anda.

Penting

Masalah mungkin muncul saat menggunakan pip dan conda bersama-sama. Saat menggabungkan pip dan conda, langkah terbaik adalah mengikuti praktik terbaik yang direkomendasikan ini.

Langkah berikutnya