스키마 확인
이전에 배운 것처럼, Spark의 ALS 구현에서는 movieId와 userId가 정수형 자료형이어야 합니다. 많은 데이터셋은 Spark에서 올바르게 동작하도록 이에 맞게 전처리가 필요해요. 흔한 문제는 Spark가 숫자를 문자열로, 혹은 그 반대로 인식하는 경우입니다.
여기서는 이러한 문제를 해결하기 위해 .cast() 메서드를 사용해 보겠습니다. 먼저 데이터셋의 스키마를 확인해 형식이 올바른지 살펴보세요.
이 연습은 강의의 일부입니다
PySpark로 추천 엔진 만들기
연습 안내
.printSchema()를 사용해 ratings 데이터셋이 ALS가 제대로 작동하는 데 필요한 올바른 자료형을 갖추었는지 확인하세요.userId와movieId는 정수형인가요?rating은 숫자 형식인가요?ratings데이터프레임의 각 열이 올바른 자료형이 되도록 수정하세요. 각 열에cast()메서드를 호출하고,userID와movieId열은"integer"형으로,rating열은"double"형으로 지정하세요. (timestamp열은 필요하지 않으니 그대로 두어도 됩니다.)- 자료형이 올바르게 변경되었는지 확인하기 위해
ratings에 대해 다시.printSchema()를 호출하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Use .printSchema() to see the datatypes of the ratings dataset
ratings.____()
# Tell Spark to convert the columns to the proper data types
ratings = ratings.select(ratings.userId.cast("____"), ratings.movieId.cast("____"), ratings.rating.cast("____"))
# Call .printSchema() again to confirm the columns are now in the correct format
ratings.____()