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.NoSuchElementExceptionjika 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 headArray itu menyebabkan java.util.NoSuchElementExceptionkapan 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).queryExecutiondalam head(n: Int)metode), jadi berikut ini semua setara, setidaknya dari apa yang saya tahu, dan Anda tidak perlu menangkap java.util.NoSuchElementExceptionpengecualian 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.