【问题标题】:It seems that Spark RDD's cache doesn't work, since there is no RDD on Spark web UI似乎 Spark RDD 的缓存不起作用,因为 Spark Web UI 上没有 RDD
【发布时间】:2021-01-01 05:14:26
【问题描述】:

我将通过在 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.txt10 是参数。 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 的存储页面时,我找不到任何关于 cache 的信息。

这是 PageRank 应用程序,它运行良好。

这里是应用的Job page,动作collect()生成一个job:

这是应用的Stage page,说明PageRank中包含很多迭代。

这是应用程序的存储页面,其中应该包含缓存的 RDD。但是,它什么都不包含,似乎cache() 不起作用。

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

【问题讨论】:

    标签: scala apache-spark rdd


    【解决方案1】:

    您可以将spark.eventLog.logBlockUpdates.enabled true 添加到spark-defaults.conf,这不会使 Spark History Server 的存储选项卡为空白。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-08
      • 1970-01-01
      相关资源
      最近更新 更多