こんにちは、Spark でレコメンデーション システムを構築しようとしています
ユーザーのメールと映画の評価を含むデータ フレームがあります。
df = pd.DataFrame(np.array([["aa@gmail.com",2,3],["aa@gmail.com",5,5],["bb@gmail.com",8,2],["cc@gmail.com",9,3]]), columns=['user','movie','rating'])
sparkdf = sqlContext.createDataFrame(df, samplingRatio=0.1)
user movie rating
aa@gmail.com 2 3
aa@gmail.com 5 5
bb@gmail.com 8 2
cc@gmail.com 9 3
私の最初の疑いは、pySpark MLlib が電子メールを受け入れないことです。私は正しいですか? これは、主キーでメールを変更する必要があるためです。
私のアプローチは、一時テーブルを作成し、個別のユーザーを選択して、行番号を持つ新しい列を追加することでした(この番号は各ユーザーの主キーになります.
sparkdf.registerTempTable("sparkdf")
DistinctUsers = sqlContext.sql("Select distinct user FROM sparkdf")
私が持っているもの
+------------+
| user|
+------------+
|bb@gmail.com|
|aa@gmail.com|
|cc@gmail.com|
+------------+
私が欲しいもの
+------------+
| user| PK
+------------+
|bb@gmail.com| 1
|aa@gmail.com| 2
|cc@gmail.com| 3
+------------+
次に結合を行い、MLlib で使用する最終的なデータ フレームを取得します。
user movie rating
1 2 3
1 5 5
2 8 2
3 9 3
お時間をいただきありがとうございます。