Pertanyaan Bagaimana cara memeriksa kesetaraan menggunakan Spark Dataframe tanpa SQL Query?


Saya ingin memilih kolom yang setara dengan nilai tertentu. Saya melakukan ini dalam scala dan mengalami sedikit masalah.

Inilah kode saya

df.select(df("state")==="TX").show()

ini mengembalikan kolom negara dengan nilai boolean, bukan hanya TX

Ive juga mencoba

df.select(df("state")=="TX").show() 

tetapi ini juga tidak berhasil.


31
2017-07-09 17:37


asal


Jawaban:


Saya memiliki masalah yang sama, dan sintaks berikut bekerja untuk saya:

df.filter(df("state")==="TX").show()

Saya menggunakan Spark 1.6.


41
2018-02-08 12:39



Ada opsi lain seperti sql sederhana. Dengan Spark 1.6 di bawah ini juga harus bekerja.

df.filter("state = 'TX'")

Ini adalah cara baru untuk menentukan filter seperti sql. Untuk daftar lengkap operator yang didukung, periksa ini kelas.


16
2018-03-03 13:11



Anda harus menggunakan where, select adalah proyeksi yang mengembalikan output dari pernyataan, jadi mengapa Anda mendapatkan nilai boolean. where adalah filter yang menjaga struktur dari dataframe, tetapi hanya menyimpan data tempat filter bekerja.

Sepanjang baris yang sama, per dokumentasi, Anda dapat menulis ini dalam 3 cara berbeda

// The following are equivalent:
peopleDf.filter($"age" > 15)
peopleDf.where($"age" > 15)
peopleDf($"age" > 15)

12
2017-07-09 17:51



Untuk mendapatkan negasi, lakukan ini ...

df.filter(not( ..expression.. ))

misalnya

df.filter(not($"state" === "TX"))

7
2018-04-26 14:15



df.filter($"state" like "T%%")  untuk pencocokan pola

df.filter($"state" === "TX")  atau df.filter("state = 'TX'") untuk kesetaraan


6
2018-03-29 20:05



Kita bisa menulis banyak Filter / di mana kondisi di Dataframe.

Sebagai contoh:

table1_df
.filter($"Col_1_name" === "buddy")  // check for equal to string
.filter($"Col_2_name" === "A")
.filter(not($"Col_2_name".contains(" .sql")))  // filter a string which is    not relevent
.filter("Col_2_name is not null")   // no null filter
.take(5).foreach(println)

3
2017-09-16 07:31



Bekerja pada Spark V2. *

import sqlContext.implicits._
df.filter($"state" === "TX")

jika perlu dibandingkan dengan variabel (misalnya, var):

import sqlContext.implicits._
df.filter($"state" === var)

0
2017-09-22 16:25