這是我的python-spark代碼的一部分,它的部分運行速度太慢,無法滿足我的需求。 特別是這部分代碼,我真的很想提高它的速度,但不知道如何去做。目前需要大約1分鐘的時間處理6000萬個數據行,我想將其提高到10秒以內。提高火花應用的速度
sqlContext.read.format("org.apache.spark.sql.cassandra").options(table="axes", keyspace=source).load()
我的火花應用程序的更多背景:
article_ids = sqlContext.read.format("org.apache.spark.sql.cassandra").options(table="article_by_created_at", keyspace=source).load().where(range_expr).select('article','created_at').repartition(64*2)
axes = sqlContext.read.format("org.apache.spark.sql.cassandra").options(table="axes", keyspace=source).load()
speed_df = article_ids.join(axes,article_ids.article==axes.article).select(axes.article,axes.at,axes.comments,axes.likes,axes.reads,axes.shares) \
.map(lambda x:(x.article,[x])).reduceByKey(lambda x,y:x+y) \
.map(lambda x:(x[0],sorted(x[1],key=lambda y:y.at,reverse = False))) \
.filter(lambda x:len(x[1])>=2) \
.map(lambda x:x[1][-1]) \
.map(lambda x:(x.article,(x,(x.comments if x.comments else 0)+(x.likes if x.likes else 0)+(x.reads if x.reads else 0)+(x.shares if x.shares else 0))))
非常感謝您的建議。
編輯:
計數佔據了大部分的時間(50歲)不參加
我也試圖與提高並行,但它並沒有任何明顯的效果:
sqlContext.read.format("org.apache.spark.sql.cassandra").options(table="axes", keyspace=source).load().repartition(number)
和
sqlContext.read.format("org.apache.spark.sql.cassandra").options(table="axes", keyspace=source,numPartitions=number).load()
您確定它是負載,還是加入?加盟價格昂貴... –
計數佔用大部分時間不加入,請參閱上面的我的更新。謝謝 – peter
這個問題與[this](http://stackoverflow.com/a/37507116/1560062)有何不同? – eliasah