Tôi muốn lọc một Pyspark DataFrame với một IN
khoản SQL-like, như trongLọc một Pyspark DataFrame với SQL giống như tại khoản
sc = SparkContext()
sqlc = SQLContext(sc)
df = sqlc.sql('SELECT * from my_df WHERE field1 IN a')
nơi a
là tuple (1, 2, 3)
. Tôi nhận được lỗi này:
java.lang.RuntimeException: [1.67] failure: ``('' expected but identifier a found
mà về cơ bản nói rằng nó đã mong một cái gì đó giống như '(1, 2, 3)' thay vì một. Vấn đề là tôi không thể viết các giá trị theo cách thủ công vì nó được trích xuất từ một công việc khác.
Làm cách nào để lọc trong trường hợp này?
Đối với phương pháp thứ hai, bạn có thể đạt được như vậy bằng cách làm df.where (df.v.isin ({"foo", "bar"})). count() –
Bạn có thể, nhưng cá nhân tôi không thích cách tiếp cận này. Với 'col', tôi có thể dễ dàng phân tách biểu thức SQL và đối tượng' DataFrame' cụ thể. Vì vậy, bạn có thể ví dụ như giữ một từ điển của các biểu thức hữu ích và chỉ cần chọn chúng khi bạn cần. Với đối tượng DF rõ ràng, bạn sẽ phải đặt nó bên trong một hàm và nó không soạn thảo tốt như vậy. – zero323