微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

似乎Spark RDD的缓存不起作用,因为Spark Web UI上没有RDD

如何解决似乎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的“存储”页面时,找不到关于缓存的任何信息。

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

The PageRank Application

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

The Job page

这是应用程序的阶段页面,它表明PageRank中包含许多迭代。

The Stage page

这是应用程序的存储页面,其中应包含缓存的RDD。但是,它似乎没有任何作用,似乎cache()无效。

The Storage page

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

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。