BaşlayınÜcretsiz Başlayın

Verine biraz Spark kat

Son egzersizde veriyi Spark'tan pandas'a nasıl taşıyacağını gördün. Peki ya tam tersini yapmak, bir pandas DataFrame'ini Spark kümesine göndermek istersen? SparkSession sınıfının bunun için de bir yöntemi var.

.createDataFrame() yöntemi bir pandas DataFrame alır ve bir Spark DataFrame döndürür.

Bu yöntemin çıktısı yerelde tutulur, SparkSession kataloğuna eklenmez. Yani üzerinde tüm Spark DataFrame metotlarını kullanabilirsin, ancak veriye diğer bağlamlardan erişemezsin.

Örneğin, DataFrame'ine referans veren bir SQL sorgusu (.sql() yöntemiyle) hata verir. Bu şekilde erişmek için veriyi bir geçici tablo olarak kaydetmen gerekir.

Bunu, yalnızca argüman olarak kaydetmek istediğin geçici tablonun adını alan .createTempView() Spark DataFrame yöntemiyle yapabilirsin. Bu yöntem DataFrame'i katalogda bir tablo olarak kaydeder; ancak tablo geçici olduğu için yalnızca Spark DataFrame'i oluşturmak için kullanılan belirli SparkSession içinden erişilebilir.

Ayrıca .createOrReplaceTempView() yöntemi de vardır. Bu, eğer önceden yoksa güvenli bir şekilde yeni bir geçici tablo oluşturur; varsa mevcut tabloyu günceller. Çift tablo sorunlarından kaçınmak için bu yöntemi kullanacaksın.

Spark veri yapılarının birbiriyle nasıl etkileştiğini görmek için diyagrama göz at.

Çalışma alanında spark adlı bir SparkSession zaten var, numpy np olarak ve pandas da pd olarak içe aktarılmış durumda.

Bu egzersiz

PySpark Temelleri

kursunun bir parçasıdır
Kursu Görüntüle

Egzersiz talimatları

  • Rasgele sayılardan oluşan bir pandas DataFrame oluşturma kodu zaten verildi ve pd_temp olarak kaydedildi.
  • Spark'ın .createDataFrame() yöntemini pd_temp argümanıyla çağırarak spark_temp adlı bir Spark DataFrame oluştur.
  • Spark kümendeki tabloların listesini incele ve yeni DataFrame'in orada olmadığını doğrula. Bunu yapmak için spark.catalog.listTables() kullanabileceğini unutma.
  • Az önce oluşturduğun spark_temp DataFrame'ini .createOrReplaceTempView() yöntemiyle geçici bir tablo olarak kaydet. Geçici tablonun adı "temp" olmalı. Unutma, tablo adını yönteme tek argüman olarak veriyorsun!
  • Tabloların listesini tekrar incele.

Uygulamalı interaktif egzersiz

Bu örnek kodu tamamlayarak bu egzersizi bitirin.

# Create pd_temp
pd_temp = pd.DataFrame(np.random.random(10))

# Create spark_temp from pd_temp
spark_temp = ____

# Examine the tables in the catalog
print(____)

# Add spark_temp to the catalog
spark_temp.____

# Examine the tables in the catalog again
print(____)
Kodu Düzenle ve Çalıştır