추가 파싱
이 데이터셋을 이전과는 상당히 다른 형식으로 변환했지만, 아직 마무리할 작업이 남아 있어요. 이후 분석에 사용할 수 있도록 컬럼 데이터를 준비하고, 중간 단계에서 사용했던 몇몇 컬럼을 제거해야 합니다.
spark 컨텍스트를 사용할 수 있고, pyspark.sql.functions는 F로 별칭이 지정되어 있어요. pyspark.sql.types의 타입들은 이미 import되어 있습니다. split_df DataFrame은 이전 단계에서 작업한 상태 그대로예요. 콘솔 영역에서 DataFrame에 대해 .printSchema()를 호출하면 컬럼 이름과 타입을 확인할 수 있다는 점을 기억해 주세요.
⚠️ 참고: AttributeError가 보이면, 연습 문제를 새로 고친 뒤 Run Solution을 클릭하세요. 이때 코드 실행은 클릭하지 마세요.
이 연습은 강의의 일부입니다
PySpark로 데이터 정제하기
연습 안내
- 분할된 컬럼들(cols)과 전체 컬럼 수(colcount)를 두 인자로 받아, 아직 컬럼으로 정의되지 않은 항목들(즉, 리스트에서 4번째 항목 이후의 모든 항목)을 리스트로 반환하는
retriever라는 새 함수를 만드세요. - 이 함수를 문자열 배열을 반환하는 Spark UDF로 정의하세요.
- 이 UDF와 DataFrame의 사용 가능한 컬럼들을 이용해 새 컬럼
dog_list를 만드세요. _c0,colcount,split_cols컬럼을 제거하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
def retriever(____, ____):
# Return a list of dog data
return ____[4:____]
# Define the method as a UDF
udfRetriever = ____(____, ArrayType(____))
# Create a new column using your UDF
split_df = split_df.withColumn('dog_list', ____(____, ____))
# Remove the original column, split_cols, and the colcount
split_df = split_df.drop('____').____('____').____('____')