스파크 1.6.2 및 스칼라 2.10 여기.스칼라 데이터 프레임 필터 문자열 배열
스파크 데이터 프레임 열을 문자열 배열로 필터링하고 싶습니다.
val df1 = sc.parallelize(Seq((1, "L-00417"), (3, "L-00645"), (4, "L-99999"),(5, "L-00623"))).toDF("c1","c2")
+---+-------+
| c1| c2|
+---+-------+
| 1|L-00417|
| 3|L-00645|
| 4|L-99999|
| 5|L-00623|
+---+-------+
val df2 = sc.parallelize(Seq((1, "L-1"), (3, "L-2"), (4, "L-3"),(5, "L-00623"))).toDF("c3","c4")
+---+-------+
| c3| c4|
+---+-------+
| 1| L-1|
| 3| L-2|
| 4| L-3|
| 5|L-00623|
+---+-------+
val c2List = df1.select("c2").as[String].collect()
df2.filter(not($"c4").contains(c2List)).show()`
아래 오류가 발생합니다.
지원되지 않는 리터럴 유형 클래스 [Ljava.lang.String; [Ljava.lang.String; @ 5ce1739c
누구든지 해결할 수 있습니까?
(안 ($ "c4".isin (c2List : _ *))) 이것은 작은 세트에서 작동했습니다. 실제로 c2List에있는 1500 개의 값 집합을 확인하겠습니다. – Ramesh
df2.filter 생각 leftanti
– Ramesh'leftanti'에 대한 좋은 지적 - 편집 된 답변보기. –