Aracılığıyla paylaş


Azure Databricks'te pandas kullanabilir misiniz?

Databricks Runtime, standart Python paketlerinden biri olarak pandas'ı içerir ve Databricks not defterlerinde ve işlerinde pandas DataFrames oluşturmanıza ve bunlardan yararlanmanıza olanak tanır.

Databricks Runtime 10.4 LTS ve üzerinde Spark üzerindeki Pandas API'sinde PySpark DataFrames'in üzerinde tanıdık pandas komutları sağlanır. DataFrame'leri pandas ve PySpark arasında da dönüştürebilirsiniz.

Apache Spark, kullanıcıların doğrudan PySpark DataFrames'e pandas dönüştürmeleri uygulamasına olanak tanıyan pandas işlev API'leri biçiminde Python mantığının Ok için iyileştirilmiş yürütülmesini içerir. Apache Spark, Python'da tanımlanan rastgele kullanıcı işlevleri için benzer Ok iyileştirmeleri kullanan pandas UDF'lerini de destekler.

Pandas, Azure Databricks'te verileri nerede depolar?

Verileri Azure Databricks'te birçok farklı konumda depolamak için pandas'ı kullanabilirsiniz. Bazı konumlardan veri depolayıp yükleyebilmek, çalışma alanı yöneticileri tarafından ayarlanan yapılandırmalara bağlıdır.

Not

Databricks, üretim verilerinin bulut nesne depolamada depolanmasını önerir. Bkz. Azure Data Lake Storage 2. Nesil ve Blob Depolama'ya bağlanma.

Unity Kataloğu'nun etkin olduğu bir çalışma alanındaysanız dış konumlarla bulut depolamaya erişebilirsiniz. Bkz. Bulut depolamayı Azure Databricks'e bağlamak için dış konum oluşturma.

Hızlı araştırma ve hassas bilgiler içermeyen veriler için, aşağıdaki örneklerde olduğu gibi göreli yolları veya DBFS'yi kullanarak verileri güvenli bir şekilde kaydedebilirsiniz:

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")

Aşağıdaki örnekte olduğu gibi, sihirli komutuyla %fs DBFS'ye yazılan dosyaları inceleyebilirsiniz. /dbfs Dizinin bu komutların kök yolu olduğunu unutmayın.

%fs ls

Göreli bir yola kaydettiğinizde, dosyanızın konumu kodunuzu nerede yürüttüğünüze bağlıdır. Databricks not defteri kullanıyorsanız, veri dosyanız kümenizin sürücüsüne bağlı birim depolama alanına kaydedilir. Küme sonlandırıldığında bu konumda depolanan veriler kalıcı olarak silinir. İsteğe bağlı dosya desteği etkinleştirilmiş Databricks Git klasörleri kullanıyorsanız verileriniz geçerli projenizin köküne kaydedilir. Her iki durumda da, aşağıdaki örnekte olduğu gibi geçerli kök dizininize göre basit bash işlemlerine izin veren magic komutu kullanılarak %sh yazılan dosyaları keşfedebilirsiniz:

%sh ls

Azure Databricks'in çeşitli dosyaları depolama şekli hakkında daha fazla bilgi için bkz . Azure Databricks'te dosyalarla çalışma.

Azure Databricks'te pandas ile verileri yükleme

Azure Databricks, araştırma için çalışma alanına veri yüklemeyi kolaylaştırmak için bir dizi seçenek sunar. Pandas ile veri yüklemek için tercih edilen yöntem, verilerinizi çalışma alanına nasıl yüklediğinize bağlı olarak değişir.

Yerel makinenizde not defterleriyle birlikte depolanan küçük veri dosyalarınız varsa, verilerinizi ve kodunuzu Git klasörleriyle birlikte karşıya yükleyebilirsiniz. Daha sonra veri dosyalarını yüklemek için göreli yolları kullanabilirsiniz.

Azure Databricks, veri yükleme için kapsamlı kullanıcı arabirimi tabanlı seçenekler sağlar. Bu seçeneklerin çoğu verilerinizi Delta tabloları olarak depolar. Delta tablosunu Spark DataFrame'e okuyabilir ve bunu pandas DataFrame'e dönüştürebilirsiniz.

DBFS veya göreli yollar kullanarak veri dosyalarını kaydettiyseniz, bu veri dosyalarını yeniden yüklemek için DBFS'yi veya göreli yolları kullanabilirsiniz. Aşağıdaki kod bir örnek sağlar:

import pandas as pd

df = pd.read_csv("./relative_path_test.csv")
df = pd.read_csv("/dbfs/dbfs_test.csv")

Pandas ve tam URL kullanarak verileri doğrudan Azure Data Lake Storage 2. Nesil yükleyebilirsiniz. Bulut verilerine erişmek için bulut kimlik bilgilerini sağlamanız gerekir. Python paketleri fsspec ve adlfs de yüklü olmalıdır.

df = pd.read_csv(
  f"abfss://{container}@{storage_account}.dfs.core.windows.net/{file_path}",
  storage_options={
    "sas_token": sas_token_value
  }
)