2017-03-16 101 views
-1

我有一個疑問,同時將數據加載到從HDFS火花集羣(獨立運行模式)說的鑲木地板或獸人文件是否它只是將在第一時間閱讀的元數據或整個數據。如果我申請過濾是否會加載整個數據和應用過濾器,或它只讀取所選列和整個數據是否將被複制到火花,如果這樣的地方會出現...提前閱讀獸人/鑲文件火花

感謝..

回答

0

不知道你的過濾,但總體上說,訪問像實木複合地板或ORC柱狀結構的文件時,如果你選擇,你將只讀取它們來存儲特定的列,而不是其他列的含義到底是什麼。

特別是如果你問這樣的事情ds.filter(「...」),只讀存儲器,回答過濾數據的能力被稱爲‘謂語下推’。一般來說它在Spark中是可用的,但是取決於你正在嘗試做什麼。例如AFAIA,Spark不能對Parquet文件中的複雜類型列執行謂詞下推。

所以我建議如果可能的話只能選擇相關列,然後過濾。如果您使用複雜類型或在Google上啓動SQL檢查(如果支持謂詞下推)。

此外,它並不重要,如果文件在HDFS或其他地方類似S3,行爲應該是一樣的

+0

謝謝...我不明白怎麼火花具有控制在HDFS選擇特定的列或我使用不同的集羣火花和HDFS文件中過濾特定的記錄,我沒有使用紗作爲火花集羣管理器 – Consumpta

+0

選擇特定列是Parquet格式(以及其他類似格式,如ORC)的一項功能。你可以在這裏閱讀:http://www.svds.com/dataformats/。 Spark在HDFS中沒有「控制」。它讀取/寫入它..想想它像存儲機器。紗線也是無關緊要的。它負責資源管理(應用程序,CPU,內存)並且不處理存儲。 –

0

如果我申請過濾器是否會加載整個數據和應用過濾器,或它只讀取..當過濾器改造完成

星火不會將數據加載到內存中,它不會從文件加載數據,直到任何行動就可以完成。這是因爲懶惰的評價。

+0

這是正確的,但我不認爲這是他問的。我假設他想對過濾的數據做一些事情,但擔心性能。 –