Untuk Spark 2.1.0, saran saya adalah menggunakan head(n: Int)
atau take(n: Int)
dengan isEmpty
, mana saja yang memiliki maksud paling jelas untuk Anda.
df.head(1).isEmpty
df.take(1).isEmpty
dengan padanan Python:
len(df.head(1)) == 0 # or bool(df.head(1))
len(df.take(1)) == 0 # or bool(df.take(1))
Menggunakan df.first()
dan df.head()
akan mengembalikan java.util.NoSuchElementException
jika DataFrame kosong. first()
panggilan head()
langsung, yang memanggil head(1).head
.
def first(): T = head()
def head(): T = head(1).head
head(1)
mengembalikan Array, jadi mengambil head
Array itu menyebabkan java.util.NoSuchElementException
kapan DataFrame kosong.
def head(n: Int): Array[T] = withAction("head", limit(n).queryExecution)(collectFromPlan)
Jadi, alih-alih memanggil head()
, gunakan head(1)
langsung untuk mendapatkan array lalu Anda bisa menggunakan isEmpty
.
take(n)
juga setara dengan head(n)
...
def take(n: Int): Array[T] = head(n)
Dan limit(1).collect()
setara dengan head(1)
(perhatikan limit(n).queryExecution
dalam head(n: Int)
metode), jadi berikut ini semua setara, setidaknya dari apa yang saya tahu, dan Anda tidak perlu menangkap java.util.NoSuchElementException
pengecualian saat DataFrame kosong.
df.head(1).isEmpty
df.take(1).isEmpty
df.limit(1).collect().isEmpty
Saya tahu ini adalah pertanyaan lama, jadi semoga ini akan membantu seseorang yang menggunakan versi Spark yang lebih baru.