使用pyspark 进行mlllib 中lda 算法训练时,跑了500多个stage 都没结束。

喵十八 2017-12-15 11:44:06
背景:
将基于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")
...全文
418 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

1,258

社区成员

发帖
与我相关
我的任务
社区描述
Spark由Scala写成,是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于MapReduce算法实现的分布式计算。
社区管理员
  • Spark
  • shiter
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧