スキーマを確認する
前のチャプターで学んだとおり、Spark の ALS を使うには movieId と userId は整数型である必要があります。多くのデータセットは、Spark で正しく動作するように事前準備が必要です。よくある問題として、数値を文字列と認識してしまう、またはその逆があります。
ここでは、この種の問題に対処するために .cast() メソッドを使います。まずはデータセットのスキーマを確認し、形式が正しいか見ていきましょう。
この演習はコースの一部です
PySpark で作る Recommendation Engines
演習の手順
.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.____()