如何解决似乎Spark RDD的缓存不起作用,因为Spark Web UI上没有RDD
我将通过在CentOS 7上运行PythonPageRank来测试Spark的RDD缓存:
spark-submit --master yarn --deploy-mode cluster /usr/spark/examples/src/main/python/pagerank.py input/testpr.txt 10
如您所见,我正在执行PageRank,因此 testpr.txt 和 10 是参数。 文件 pagerank.py 包含以下代码:
spark = SparkSession\
.builder\
.appName("PythonPageRank")\
.getorCreate()
lines = spark.read.text(sys.argv[1]).rdd.map(lambda r: r[0])
links = lines.map(lambda urls: parseNeighbors(urls)).distinct().groupByKey().cache()
ranks = links.map(lambda url_neighbors: (url_neighbors[0],1.0))
for iteration in range(int(sys.argv[2])):
contribs = links.join(ranks).flatMap(
lambda url_urls_rank: computeContribs(url_urls_rank[1][0],url_urls_rank[1][1]))
ranks = contribs.reduceByKey(add).mapValues(lambda rank: rank * 0.85 + 0.15)
for (link,rank) in ranks.collect():
print("%s has rank: %s." % (link,rank))
spark.stop()
如您所见,links = lines.map(lambda urls: parseNeighbors(urls)).distinct().groupByKey().cache()
包含缓存。但是,当我查看Spark UI的“存储”页面时,找不到关于缓存的任何信息。
这是应用程序的工作页面,操作collect()
生成了一个作业:
这是应用程序的阶段页面,它表明PageRank中包含许多迭代。
这是应用程序的存储页面,其中应包含缓存的RDD。但是,它似乎没有任何作用,似乎cache()
无效。
为什么在存储页面上看不到任何缓存的RDD?为什么 pagerank.py 中的cache()
不起作用?希望有人能帮助我。
解决方法
您可以将spark.eventLog.logBlockUpdates.enabled true
添加到spark-defaults.conf
中,这不会使Spark History Server的“存储”选项卡为空白。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。