0

こんにちは、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

お時間をいただきありがとうございます。

4

1 に答える 1