UDF 만들기 연습
때로는 내장 함수만으로는 처리할 수 없는 변환이 필요할 때가 있습니다. 이럴 때 사용자 정의 함수("UDF")가 적합해요.
SQL 함수 udf를 사용할 수 있습니다.
DataFrame[doc: array<string>, in: array<string>, out: array<string>] 타입의 데이터프레임 df2가 주어져 있습니다. doc 컬럼에는 단순한 토큰이 들어 있습니다.
다음 코드는 doc에 '1'이 포함된 df2의 처음 20개 행을 표시합니다:
df2.where(array_contains('doc','1')).show()
다음 두 가지 목표를 달성해야 합니다:
- 변환된 데이터가 비어 있지 않은 벡터로만 구성되도록 하세요.
- 어떤 데이터프레임 컬럼은 문자열 배열을 담고 있으며, 각 배열에는 항목이 하나만 있습니다. 이 컬럼을 문자열로 변환하려고 합니다.
이 연습은 강의의 일부입니다
Python에서 Spark SQL 입문
연습 안내
numNonzeros()를 사용하여 값이 비어 있지 않은 벡터일 때에만 true를 반환하는 udf를 만드세요.- 배열의 첫 번째 요소를 꺼내 그 문자열 표현을 반환하는 udf를 만드세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Returns true if the value is a nonempty vector
nonempty_udf = udf(lambda x:
True if (x and hasattr(x, "toArray") and x.____())
else False, ____())
# Returns first element of the array as string
s_udf = udf(lambda x: ____(x[0]) if (x and type(x) is list and len(x) > 0)
else '', ____())