scala—spark rdd的缓存似乎不起作用,因为spark web ui上没有rdd

5n0oy7gb  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(604)

我将通过在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() 包含缓存。但是,当我查看SparkUI的存储页面时,我找不到任何关于缓存的内容。
这是pagerank应用程序,它运行良好。

这是应用程序的作业页,操作 collect() 生成作业:

这是应用程序的stage页面,它显示pagerank中包含许多迭代。

下面是应用程序的存储页,其中应该包含缓存的RDD。然而,它什么也没有,似乎 cache() 不起作用。

为什么在存储页面上看不到任何缓存的RDD?为什么 cache() 在pagerank.py工作?希望有人能帮我。

sulc1iza

sulc1iza1#

您可以添加 spark.eventLog.logBlockUpdates.enabled true 进入 spark-defaults.conf ,这不会使spark history服务器的“存储”选项卡为空。

相关问题