sparkpython效率低_为什么我的简单Spark应用程序工作得这么慢?

我试图count使用Spark API对mllib的FP growth生成的频繁项集。我的火花是1.5.1版。以下是我的代码:#!/usr/bin/python

from pyspark.mllib.fpm import FPGrowth

from pyspark import SparkContext,SparkConf

from pyspark import HiveContext

import os

os.environ['PYSPARK_PYTHON']='/usr/bin/python'

appName = "FP_growth"

sc = SparkContext()

sql_context = HiveContext(sc)

def read_spu(prod):#prod_code):

sql = """

select

t.orderno_nosplit,

t.prod_code,

t.item_code,

sum(t.item_qty) as item_qty

from ioc_fdm.fdm_dwr_ioc_fcs_pk_spu_item_f_chain t

where t.prod_code='%s'

group by t.prod_code, t.orderno_nosplit, t.item_code """%prod

spu_result = sql_context.sql(sql)

return spu_result.cache()

if __name__ == '__main__':

spu=read_spu('6727780')

conf=0.7

trans=spu.rdd.repartition(100).map(lambda x: (x[0],x[2])).groupByKey().mapValues(list).values().cache()

model = FPGrowth.train(trans, 0.01, 100)

freq_count = model.freqItemsets().count()

print 'freq_count:',freq_count

sc.stop()

输入数据是从Hadoop读取的,数据不是很大,只有大约20000行。但是,脚本在.count阶段的工作非常缓慢。我不知道为什么。从性能上看,似乎是因为数据倾斜。但是输出的数据不是很大(每个任务只有大约100KB)。在

集群有8个节点,320个核心,总内存为1.56t(不仅仅是一个用户)。我的spark提交脚本是spark-submit --master yarn-cluster --executor-memory 30g --num-executors 20 --executor-cores 5 FP_growth.py

附件是运行时性能的屏幕图像:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值