2015-12-02 64 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已被緩存和物化,否則對用戶沒有持久的分佈式狀態是透明的,所以除了局部變量之外沒有任何東西可以列出。