【问题标题】:How can one see what RDD is available to Spark?如何查看 Spark 可以使用哪些 RDD?
【发布时间】:2016-03-06 19:36:55
【问题描述】:

我刚开始使用 Spark。我尝试遵循this 教程(我使用 Python)。

作为前两句话,我看到以下内容:

Spark 的主要抽象是项目的分布式集合 称为弹性分布式数据集(RDD)。 RDDs 可以从 Hadoop InputFormats(例如 HDFS 文件)或通过转换其他 RDD。让我们从 README 文件的文本中创建一个新的 RDD Spark源码目录

据我正确理解,Spark 可以“访问”分布在属于运行 Spark 的集群的不同机器上的项目。这些项目可以被想象为文件(或至少作为可以从文件中获得的东西)。特别是,通过执行以下操作:

textFile = sc.textFile("test.txt")

我们使用“test.txt”文件创建一个新的“项目”并将其添加到 Spark 可见(可访问)的项目集合中。

我做对了吗。如果是这样,我如何才能看到 Spark 可用的所有“项目”。特别是,我如何才能看到那里有一个新创建的项目。

添加

其中一位用户不清楚我的意思。所以,我试着澄清一下。在本教程中,提到了“分布式项目集合”。所以,有一些“项目”。可以看到存在哪些项目吗?或者至少存在多少项目?我可以在 PySpark 会话中输入一些内容来获取一些现有的“项目”吗?

我对术语也有疑问。是一组项目称为RDD还是集合中的每个元素(项目)称为RDD(我指的句子在这方面是模棱两可的)。通过执行sc.textFile,我们创建了一个新的 RDD。那么,我们在项目集合中添加了一个项目?我们能否看到集合中的项目(或至少是集合中的项目数)。

增加了 2 个

看起来我的意思还不清楚。我不明白有什么不清楚的。也许那些我的问题不清楚的人可以详细说明究竟什么是不清楚的。

但无论如何,我会尝试更多。

Spark 的主要抽象是项目的分布式集合 称为弹性分布式数据集 (RDD)。

如果有一个项目集合,那么应该有一种方法可以获取有关此“项目集合”的一些信息。例如,很自然地假设项目集合可以通过集合中的项目数量来表征。我可以得到这个号码吗?

【问题讨论】:

  • 我不是您在更新中提到的“同一用户”,但仍然不清楚。
  • wholeTextFiles 返回内容和文件名,如果这是你想要的。
  • RDD 和其他对象一样只是一个对象。它没有特殊含义。
  • @zero323,但是我们能数出这些物体吗?

标签: python apache-spark


【解决方案1】:

这些项目可以被想象为文件(或至少作为可以从文件中获得的东西)。

不是真的。我想这里的一个基本问题是理解 RDD 和实际数据之间的关系。重要的是要注意以下事实:

  • RDD 被延迟评估。如果没有对给定的 RDD 执行任何操作,它将不会被实现。
  • RDD 是描述,并不真正包含数据。

其中涉及一些微妙之处,例如,当您并行化本地数据结构并且数据在闭包内被捕获时,但这并不会真正影响这个答案。

当你打电话时:

textFile = sc.textFile("test.txt")

什么都没有发生。

好吧,它创建了一个 Python 对象和一个相应的 Java 对象,但此时文件甚至可能不存在。在某些情况下,事情变得更加复杂,尤其是在DataFrames 中,Spark 可能会访问一些元数据甚至读取整个数据集以推断模式,但让我们坚持基础。

除非 RDD 已经被缓存和物化,否则没有对用户透明的持久分布式状态,所以除了局部变量之外没有什么可以列出的。

【讨论】:

    【解决方案2】:

    Spark 可以读取本地文件系统和 HDFS 或其他分布式文件系统上的每个文件/目录作为 S3。

    当您编写sc.textFile 时,您正在根据您指定的文件/目录的内容创建一个RDD。特别是文件/目录的每一行都成为RDD的一个条目。

    RDD 是项目的集合。它是 Resilient Distributed Dataset 的首字母缩写,即它是分布在集群节点之间的项目集合。

    例如,如果您将文件 test.txt 存储在 HDFS 上的 /tmp 目录中,并且它包含以下行:

    one
    two
    three
    

    通过编写sc.textFile('hdfs://tmp/test.txt'),您可以创建一个包含三个字符串(每行一个字符串)的RDD。

    希望我的解释足够了。如果您需要更多详细信息,请询问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-22
      • 2020-10-26
      • 1970-01-01
      • 2021-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多