[SCALA] 하나 개의 컬럼이 다른 컬럼의 구성원 인 경우 스파크 dataframe를 필터링하는 방법
SCALA하나 개의 컬럼이 다른 컬럼의 구성원 인 경우 스파크 dataframe를 필터링하는 방법
나는 두 개의 열 (한 문자열과 문자열의 하나 개의 배열)와 dataframe 있습니다 :
root
|-- user: string (nullable = true)
|-- users: array (nullable = true)
| |-- element: string (containsNull = true)
어떻게 결과 dataframe는 사용자가 사용자에 있음 행이 포함되도록 dataframe를 필터링 할 수 있습니다?
해결법
-
==============================
1.물론, 너무 열심히 가능하고 아니에요. 이를 달성하기 위해 당신은 UDF를 사용할 수 있습니다.
물론, 너무 열심히 가능하고 아니에요. 이를 달성하기 위해 당신은 UDF를 사용할 수 있습니다.
import org.apache.spark.sql.functions._ import org.apache.spark.sql.types._ val df = sc.parallelize(Array( ("1", Array("1", "2", "3")), ("2", Array("1", "2", "2", "3")), ("3", Array("1", "2")) )).toDF("user", "users") val inArray = udf((id: String, array: scala.collection.mutable.WrappedArray[String]) => array.contains(id), BooleanType) df.where(inArray($"user", $"users")).show()
출력은 다음과 같습니다
+----+------------+ |user| users| +----+------------+ | 1| [1, 2, 3]| | 2|[1, 2, 2, 3]| +----+------------+
-
==============================
2.빠르고 간단합니다 :
빠르고 간단합니다 :
import org.apache.spark.sql.functions.expr df.where(expr("array_contains(users, user)")
from https://stackoverflow.com/questions/39422133/how-to-filter-spark-dataframe-if-one-column-is-a-member-of-another-column by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 수비력 foo는 [A, B] (XS : (A, B) *) : 어떻게 데프 foo는 사이에 [A] (A * XS)를 구별 할 수 있습니까? (0) | 2019.11.24 |
---|---|
[SCALA] 스칼라 : 왜 단위로 지능을 변환 할 수 있습니까? (0) | 2019.11.23 |
[SCALA] 이웃와 비교하여 목록 항목을 그룹화 (0) | 2019.11.23 |
[SCALA] 스칼라를 사용하여 소수를 찾을 수 있습니다. 개선하는 데 도움이 (0) | 2019.11.23 |
[SCALA] 원시 스칼라 타입을 갖는 구현 방법 (0) | 2019.11.23 |