我刚开始使用Spark。我尝试遵循this教程(我使用Python)。
作为前两句,我看到以下内容:
Spark的主要抽象是一个分布式的项目集合 称为弹性分布式数据集(RDD)。 RDD可以从中创建 Hadoop InputFormats(如HDFS文件)或通过转换其他 RDDS。让我们从中的README文件的文本中创建一个新的RDD Spark源目录
据我所知,Spark已经"访问"分配在属于运行Spark的群集的不同计算机上的项目。这些项目可以想象为文件(或至少可以从文件中获取)。特别是,通过执行以下内容:
textFile = sc.textFile("test.txt")
我们使用" test.txt"文件以创建一个新的"项目"并将其添加到Spark可见(可访问)的项目集中。
我做对了吗如果是这种情况,我怎样才能看到所有"项目"可用于Spark。特别是,我怎么能看到新创建的项目在那里。
ADDED
对于其中一位用户,我不清楚我的意思。所以,我试着澄清一下。在教程中,"分布式项目集合"提到了。所以,有一些"项目"。可以看到哪些物品存在?或者至少存在多少项?我可以在PySpark会话中输入一些东西来获取一些现有的"项目"?
我的术语也有问题。它是一组名为RDD的项目,或者集合中的每个元素(项目)都称为RDD(我所指的句子在这方面是不明确的)。通过执行sc.textFile
,我们制作了一个新的RDD。那么,我们在项目集中添加了一个项目?我们可以看到集合中的项目(或至少是集合中的项目数量)。
已添加2
看起来我还不清楚我的意思。我不明白什么是不清楚的。也许那些我的问题不明确的人可以详细说明究竟有什么不清楚。
但无论如何,我尝试更多。
Spark的主要抽象是一个分布式的项目集合 称为弹性分布式数据集(RDD)。
如果有一个项目集合,应该有办法获得有关此项目"项目集合的一些信息"。例如,很自然地假设项目集合可以通过集合中的项目数来表征。我能得到这个号码吗?
答案 0 :(得分:0)
Spark可以读取本地文件系统和HDFS或其他分布式文件系统上的每个文件/目录作为S3。
当您编写sc.textFile
时,您正在根据指定的文件/目录的内容创建RDD。特别是,文件/目录的每一行都成为RDD的一个条目。
RDD是集合项目。它是Resilient Distributed Dataset的首字母缩写,即它是在集群节点之间分配的项集合。
例如,如果文件test.txt
存储在目录/tmp
中的HDFS上,并且它包含行:
one
two
three
通过编写sc.textFile('hdfs://tmp/test.txt')
创建一个包含三个字符串的RDD(每行一个)。
希望我的解释是足够的。如果您需要更多详细信息,请询问。
答案 1 :(得分:0)
这些项目可以想象为文件(或者至少可以从文件中获取)。
不是真的。我想这里的一个基本问题是理解RDD与实际数据之间的关系。重要的是要注意以下事实:
涉及一些细微之处,例如,当您并行化本地数据结构并在闭包内捕获数据时,但它并不会真正影响此答案。
致电时:
textFile = sc.textFile("test.txt")
没有真正发生的事。
好吧,它创建了一个Python对象和一个相应的Java对象,但此时文件可能根本不存在。事情变得更加复杂,尤其是使用DataFrames
时,Spark可能会访问某些元数据甚至读取整个数据集来推断模式,但我们仍然坚持基础知识。
除非RDD已被缓存并实现,否则没有持久的分布式状态对用户透明,因此除了局部变量之外没有任何内容可以列出。