Bisakah Anda menggunakan panda di Azure Databricks?
Databricks Runtime menyertakan panda sebagai salah satu paket Python standar, sehingga memungkinkan Anda membuat dan memanfaatkan DataFrames panda di notebook dan pekerjaan Databricks.
Di Databricks Runtime 10.4 LTS ke atas, Pandas API di Spark menyediakan perintah panda yang sudah dikenal di atas PySpark DataFrames. Anda juga dapat mengonversi DataFrames antara panda dan PySpark.
Apache Spark mencakup eksekusi logika Python yang dioptimalkan panah dalam bentuk API fungsi panda, yang memungkinkan pengguna menerapkan transformasi panda langsung ke PySpark DataFrames. Apache Spark juga mendukung UDF pandas, yang menggunakan pengoptimalan Panah serupa untuk fungsi pengguna sewenang-wenang yang ditentukan dalam Python.
Di mana panda menyimpan data di Azure Databricks?
Anda dapat menggunakan panda untuk menyimpan data di berbagai lokasi di Azure Databricks. Kemampuan Anda untuk menyimpan dan memuat data dari beberapa lokasi bergantung pada konfigurasi yang ditetapkan oleh administrator ruang kerja.
Catatan
Databricks merekomendasikan penyimpanan data produksi pada penyimpanan objek cloud. Lihat Menyambungkan ke Azure Data Lake Storage Gen2 dan Blob Storage.
Jika Anda berada di ruang kerja yang mendukung Katalog Unity, Anda dapat mengakses penyimpanan cloud dengan lokasi eksternal. Lihat Membuat lokasi eksternal untuk menyambungkan penyimpanan cloud ke Azure Databricks.
Untuk eksplorasi cepat dan data tanpa informasi sensitif, Anda dapat menyimpan data dengan aman menggunakan jalur relatif atau DBFS, seperti dalam contoh berikut:
import pandas as pd
df = pd.DataFrame([["a", 1], ["b", 2], ["c", 3]])
df.to_csv("./relative_path_test.csv")
df.to_csv("/dbfs/dbfs_test.csv")
Anda dapat menjelajahi file yang ditulis ke DBFS dengan %fs
perintah ajaib, seperti dalam contoh berikut. Perhatikan bahwa /dbfs
direktori adalah jalur akar untuk perintah ini.
%fs ls
Saat Anda menyimpan ke jalur relatif, lokasi file Anda bergantung pada tempat Anda menjalankan kode. Jika Anda menggunakan notebook Databricks, file data Anda disimpan ke penyimpanan volume yang dilampirkan ke driver kluster Anda. Data yang disimpan di lokasi ini dihapus secara permanen saat kluster berakhir. Jika Anda menggunakan folder Databricks Git dengan dukungan file arbitrer diaktifkan, data Anda akan disimpan ke akar proyek Anda saat ini. Dalam kedua kasus, Anda dapat menjelajahi file yang ditulis menggunakan %sh
perintah ajaib, yang memungkinkan operasi bash sederhana relatif terhadap direktori akar Anda saat ini, seperti dalam contoh berikut:
%sh ls
Untuk informasi selengkapnya tentang cara Azure Databricks menyimpan berbagai file, lihat Bekerja dengan file di Azure Databricks.
Bagaimana Anda memuat data dengan panda di Azure Databricks?
Azure Databricks menyediakan sejumlah opsi untuk memfasilitasi pengunggahan data ke ruang kerja untuk eksplorasi. Metode yang disukai untuk memuat data dengan panda bervariasi tergantung pada cara Anda memuat data ke ruang kerja.
Jika Anda memiliki file data kecil yang disimpan bersama notebook di komputer lokal, Anda dapat mengunggah data dan kode bersama dengan folder Git. Anda kemudian dapat menggunakan jalur relatif untuk memuat file data.
Azure Databricks menyediakan opsi berbasis UI yang luas untuk pemuatan data. Sebagian besar opsi ini menyimpan data Anda sebagai tabel Delta. Anda dapat membaca tabel Delta ke Spark DataFrame, lalu mengonversinya ke DataFrame pandas.
Jika Anda telah menyimpan file data menggunakan DBFS atau jalur relatif, Anda dapat menggunakan DBFS atau jalur relatif untuk memuat ulang file data tersebut. Kode berikut memberikan contoh:
import pandas as pd
df = pd.read_csv("./relative_path_test.csv")
df = pd.read_csv("/dbfs/dbfs_test.csv")
Anda dapat memuat data langsung dari Azure Data Lake Storage Gen2 menggunakan panda dan URL yang sepenuhnya memenuhi syarat. Anda perlu memberikan kredensial cloud untuk mengakses data cloud. Paket Python fsspec
dan adlfs
juga harus diinstal.
df = pd.read_csv(
f"abfss://{container}@{storage_account}.dfs.core.windows.net/{file_path}",
storage_options={
"sas_token": sas_token_value
}
)