背景:
將基于spark 2.2 ml庫,使用python 開發的LDA 程式移植到spark 1.6 mllib 運行(恩 ,因為spark 1.6 ml庫的python api 不支持lda)
具體爬坑記錄見
http://www.jianshu.com/p/31ddfacc67e2
遇到問題:
使用hvie 讀取的df,轉為rdd之后,進行lda 的train,跑了30多分鐘,500多個stage 都么結束。(測驗資料一共就10條)
但是,對這部分代碼 先collect之后,再parallelize 之后,就可以了。
原始代碼如下:
features = data.rdd.map(lambda x: (x[0], x[1:])).groupByKey().mapValues(list).map(
lambda row: build_sparse_vector(row, tag_index_map_in)).map(lambda x: [x[0], x[1]]).cache()
model = LDA.train(features, k=10, seed=long(time.time()), optimizer="em")
修改之后如下
features = data.rdd.map(lambda x: (x[0], x[1:])).groupByKey().mapValues(list).map(
lambda row: build_sparse_vector(row, tag_index_map_in)).map(lambda x: [x[0], x[1]]).cache()
cc = features.collect()
rdd = sc.parallelize(cc)
model = LDA.train(rdd, k=10, seed=long(time.time()), optimizer="em")
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/56401.html
標籤:Spark
下一篇:誰使用go華為云服務器的啊
