DataFrame repartition()
ve DataFrameWriter partitionBy() yöntemleri arasındaki fark nedir? Her ikisi partition data based on DF column
için kullanılır umut Spark SQL - df.repartition ile DataFrameWriter bölümü arasındaki fark?
cevap
repartition(COL)
'u çalıştırırsanız, hesaplamalar sırasında bölümlemeyi değiştirirsiniz - spark.sql.shuffle.partitions
(varsayılan: 200) bölümleri alırsınız. Daha sonra .write
numaralı telefonu arayarak çok sayıda dosya içeren bir dizin alırsınız.
Eğer .write.partitionBy(COL)
çalıştırırsanız o zaman sonuç olarak size COL benzersiz değerlerin olduğu kadar çok dizinleri alacak. Bu, daha fazla veri okumayı hızlandırır (bölümleme sütununa göre filtreleme yaparsanız) ve depolama alanına biraz yer kazandırır (bölümleme sütunu veri dosyalarından kaldırılır).
dikkat: Kabul cevap oldukça doğru değil inanıyoruz! Bu soruyu sorduğunuz için sevindim, çünkü benzer şekilde adlandırılan bu işlevlerin davranışı, resmi kıvılcım belgelerinde iyi belgelenmemiş önemli ve beklenmedik şekillerde farklıdır.
Kabul edilen yanıtın ilk kısmı doğru: df.repartition(COL, numPartitions=k)
çağrısı, karma tabanlı bir bölümleyici kullanarak k
bölümleri içeren bir veri çerçevesi oluşturacaktır. COL
burada bölümleme anahtarını tanımlar - tek bir sütun veya sütun listesi olabilir. Karma tabanlı bölümleyici, her bir giriş satırının bölüm anahtarını alır ve bölümlerini partition = hash(partitionKey) % k
gibi bir şey aracılığıyla keser. Bu, aynı bölüm anahtarına sahip tüm satırların aynı bölümde bittiğini garanti eder. Ancak, (bölüm tuşları arasında bir karma çarpışma meydana geldiğinde) çoklu bölüm anahtarlardan satırlar da aynı bölüm de gidebilirler ve bazı bölümleri boş olabilir.
Özetle, df.repartition(COL, numPartitions=k)
ait unintuitive hususların k
bölümleri bazıları boş olabilir diğerleri birden bölüm tuşları gelen satır içerebilir, oysa
- bölümleri kesinlikle bölme anahtarları
- ayırmak olmaz vardır
df.write.partitionBy
davranışı birçok kullanıcı beklemek olmaz bir şekilde, oldukça farklıdır. Çıktı dosyalarınızın tarih bölümlü olmasını ve verilerinizin 7 günden fazla olmasını istediğinizi varsayalım. Ayrıca, df
'un başlaması için 10 bölümün olduğunu varsayalım. df.write.partitionBy('day')
'u çalıştırdığınızda, kaç tane çıktı dosyası beklemeniz gerekir? Cevap, duruma bağlı'. df
yılında başlangıç bölümleri her bölüm her güne ait verileri içeriyorsa df
daki başlangıç bölümleri her tam olarak bir güne ait verileri içeriyorsa, o zaman cevap 70, daha sonra cevap 10.
nasıl açıklayabiliriz olduğunu bu davranış? df.write
'u çalıştırdığınızda, df
'daki orijinal bölümlerin her biri bağımsız olarak yazılır. Yani, orijinal 10 bölümünüzün her biri 'gün' sütununda ayrı bölümlere ayrılır ve her alt bölüm için ayrı bir dosya yazılır.
Bu davranışı oldukça can sıkıcı buluyorum ve dataframes yazarken global bir yeniden bölümleme yapmanın bir yolu olmasını diliyorum.
- 1. .got ve .got.plt bölümü arasındaki fark nedir?
- 2. On-Prem SQL ile Azure SQL Arasındaki Fark
- 3. Spark SQL - gzip vs snappy ile lzo sıkıştırma formatları arasındaki fark
- 4. CURRENT_TIMESTAMP ile GETDATE() arasındaki fark
- 5. Spark SQL
- 6. Spark SQL
- 7. Smalltalk'taki fark ile Smalltalk arasındaki fark nedir?
- 8. SQL Server 2005'te tran ile işlem arasındaki fark nedir?
- 9. SQL - COALESCE ve ISNULL arasındaki fark nedir?
- 10. Sql Bağlantısı ve OLEDB Bağlantısı Arasındaki Fark
- 11. page_load ile onLoad arasındaki fark
- 12. = ile mysql arasındaki fark nedir?
- 13. OnTouchListener ile OnClickListener arasındaki fark
- 14. JavaFX ile Vaadin arasındaki fark
- 15. Asfreq ile resample arasındaki fark
- 16. Referans ile & * arasındaki fark nedir?
- 17. Satır_dizisi ile result_dizisi arasındaki fark
- 18. UserTransaction ile EntityTransaction arasındaki fark
- 19. difftime ile '-' arasındaki fark nedir?
- 20. arasındaki fark
- 21. arasındaki fark
- 22. Spark SQL DataFrame'i flatMap ile nasıl kullanılır?
- 23. arasındaki fark nedir?
- 24. Birimin arayüz bölümü ile karşılaştırıldığında uygulamada tanımlanan tipler arasındaki fark nedir?
- 25. Spark SQL sözdizimi başvurusu
- 26. Tüm Spark SQL DataType
- 27. arasındaki fark?
- 28. arasındaki fark?
- 29. arasındaki fark
- 30. arasındaki fark