2017-10-08 2 views
0

자주 항목 집합을 식별하려면 데이터 집합을 처리해야합니다. 따라서 입력 열은 벡터 여야합니다. 원래 열은 쉼표로 구분 된 항목 문자열입니다, 그래서 내가 다음 않았다Spark Dataframe 열을 벡터에서 집합으로 변환하는 방법은 무엇입니까?

functions.split(out_1['skills'], ',') 

문제는 skills의 일부 행에 대해, 내가 복제 한 값이며하려고 할 때이 오류를 일으키는 자주 항목 집합을 식별합니다.

중복 된 요소를 제거하기 위해 벡터를 집합으로 변환하고 싶었습니다. 이런 식으로 뭔가가 :

functions.to_set(functions.split(out_1['skills'], ',')) 

하지만 즉 설정 벡터에서 열을 변환하는 기능을 찾을 수 없습니다, 더 to_set 기능이 없습니다.

내가 원하는 것, 즉 벡터에서 복제 된 요소를 제거하려면 어떻게해야합니까?

답변

2

당신은 functions.udf(set)를 사용하여 UDF에 파이썬에서 set 기능을 변환 한 다음 배열 컬럼에 적용 할 수 있습니다 :

df.show() 
+-------+ 
| skills| 
+-------+ 
|a,a,b,c| 
| a,b,c| 
|c,d,e,e| 
+-------+ 

import pyspark.sql.functions as F 
df.withColumn("unique_skills", F.udf(set)(F.split(df.skills, ","))).show() 
+-------+-------------+ 
| skills|unique_skills| 
+-------+-------------+ 
|a,a,b,c| [a, b, c]| 
| a,b,c| [a, b, c]| 
|c,d,e,e| [c, d, e]| 
+-------+-------------+ 
관련 문제