公園を支払います

pyspark.sql輸入SparkSessionから

 

輸入数学

os.pathインポートABSPATHから

 

デフcosSim(V1、V2):

    メンバー=減らす(ラムダX、Yは、X + Y、マップ(ラムダD:D [0] * D [1]、ZIP(V1、V2)))

    T1 = math.sqrt(N、(ラムダmを減らす:m + nは、マップ(ラムダX:math.pow(X、2)、V1)))

    T2 = math.sqrt(N、(ラムダmを減らす:m + nは、マップ(ラムダX:math.pow(X、2)、V2)))

    1.0 *部材/(T1 *のT2)を返します

 

warehouse_location = ABSPATH( 'スパーク倉庫')

 

スパーク= SparkSession.builder.appName( "pysparkのALS")。コンフィグ( "spark.sql.warehouse.dir"、warehouse_location).enableHiveSupport()。getOrCreate()

 

データ= spark.sql( "SELECTユーザーIDは、アイテムIDは、ユーザーIDによってテーブル群からスコアとして)*(カウント、ITEMID")

pyspark.mllib.recommendationインポート評価から

評価= data.rdd.map(ラムダX:評価(INT(X [0])、INT(X [1])、フロート(X [2])))

pyspark.mllib.recommendationインポートALSから

モデル= ALS.trainImplicit(評価、ランク= 10)

JF = model.productFeatures()

JF = spark.createDataFrame(JF)

JF = jf.withColumnRenamed( "_ 1"、 "ID")。withColumnRenamed( "_ 2"、 "機能")

VVV = spark.sql( "アイテムIDを選択し、コード、テーブルからCITY_CODE")

vjf = jf.join(VVV、jf.id == vvv.itemid)

cvjf = vjf.select( "アイテムID"、 "コード"、 "CITY_CODE"、 "機能")

jcvjf = cvjf.withColumnRenamed( "アイテムID"、 "xjobid")。withColumnRenamed( "コード"、 "Xcodeの")。withColumnRenamed( "CITY_CODE"、 "xcity_code")。withColumnRenamed( "機能"、 "xfeatures")

JJJ = cvjf.join(jcvjf、(cvjf.code == jcvjf.xcode)&(cvjf.city_code == jcvjf.xcity_code))

JJ = jjj.filter( "ITEMID!= xitemid")。( "アイテムID"、 "xitemid"、 "機能"、 "xfeaturesを")を選択

 

SJJ = jj.rdd.map(ラムダX(X [0]、X [1]、cosSim(X [2]、X [3])))

GSJ = sjj.groupBy(ラムダX:X [0])

SJ3 = gsj.map(ラムダX:STR(X [0])+ ' '+' は、' 参加(マップ(ラムダM:STR(M [1])、ソート(リスト(X [1])、キー=ラムダN:N [2]、逆= TRUE)[10])))

#printのsj3.collect()

sj3.saveAsTextFile( "/ HDFS / py_als_test")

spark.stop()

おすすめ

転載: www.cnblogs.com/kayy/p/11272329.html