2015-12-02 60 views
0

我刚开始使用Spark。我尝试按照this教程(我使用Python)。如何看到RDD可用于Spark?

由于前两句我看到以下内容:

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

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

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

我们用“的test.txt”文件,以创建一个新的“项目”,并把它添加到组由星火可见(访问)项目。

我说得没错。如果是这样的话,我怎么能看到Spark的所有“项目”。特别是,我如何看到新创建的项目在那里。

ADDED

给用户的一个目前并不清楚我的意思。所以,我试图澄清。在教程中提到了“分布式项目集合”。所以,有一些“项目”。人们可以看到什么项目存在?或者至少有多少物品存在?我可以在PySpark会话中输入一些内容来获取许多现有的“项目”?

我也有一个术语问题。它是一组称为RDD的项目还是集合中的每个元素(项目)都称为RDD(我指的句子在这方面是不明确的)。通过执行sc.textFile我们制作了一个新的RDD。那么,我们在物品组中添加了一件物品?我们能否看到集合中的项目(或至少是集合中的项目数量)。

加入2-

它看起来像它仍然不清楚我是什么意思。我不明白什么是不明确的。也许那些对我的问题不清楚的人可以详细说明什么是不明确的。

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

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

如果有一个项目的集合,应该有办法获得关于这个“项目集合”的一些信息。例如,假设一组物品可以通过集合中物品的数量来表征是很自然的。我可以得到这个号码吗?

+0

我不是你在更新中提到的“同一用户”,但它仍然不清楚。 – eliasah

+0

'wholeTextFiles'返回内容和文件名,如果这是你想要的。 –

+0

RDD只是其他任何对象。它没有特别的意义。 – zero323

回答

0

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包含三个串(每行一个) 。

希望我的解释足够了。如果你需要更多的细节,请问。

0

这些项目可以想象成文件(或者至少可以从文件中获得)。

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

  • RDD被懒惰地评估。如果在给定的RDD上没有执行任何操作,它将不会实现。
  • RDD是一个描述,并不真正包含数据。

有一些细微之处,例如,当您并行化本地数据结构并在闭包内捕获数据时,但它并不会真正影响此答案。

当你拨打:

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

没有真的发生。

那么,它创建一个Python对象和一个相应的Java对象,但此时文件可能不存在。当事情变得更加复杂时,情况再次出现,特别是在DataFrames,其中Spark可能访问一些元数据,甚至读取整个数据集以推断模式,但让我们坚持基本知识。

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