2016-09-30 75 views
0

只是標題說了什麼。每次我啓動RedHat機器上的SparkR shell並嘗試使用read.df()函數時,它說它找不到那個函數。如果有幫助,我使用SparkR 2.0。SparkR說它找不到函數read.df

更具體地講,這裏就是我試圖鍵入:

data <- read.df(sqlContext, "/path/to/the/file", "parquet")

編輯:要澄清一下,這裏的確切情況:

> data <- df.read("valid/path/to/parquet/file", "parquet") Error: could not find function "df.read"

+0

已裝入sparkR包? –

+0

我想是這樣的......它說它成功加載。你有什麼建議,我可以檢查以確保一切都在那裏? – ribs2spare

回答

0

我想出了什麼問題,並認爲我會張貼它,以防其他人有類似的問題。基本上我打開R殼,並跑install.packages("devtools")。這允許我直接從github上安裝sparkR包,如下所示:devtools::install_github("/apache/spark/R/pkg")。這工作。還有一些其他的小細節,例如使用R的setRepositories()函數來確保我已經允許所有回購下載devtools。儘管如此,我之前完成了所有這些工作。真正的問題有三個:

  1. 我錯誤地鍵入了函數。關於它的不同版本有很多相互衝突的文檔(我注意到與Spark相關的努力是一種趨勢;在信任任何文檔之前檢查版本!)。正確的語法是read.df("/path/to/file", "parquet")其中"parquet"可以是json或任何您正在閱讀的文件類型。

  2. 我需要在打開R shell後附加sparkR軟件包!我對R和sparkR非常陌生,誠實地說,我試圖做99%的工作,所以我實際上並不知道R在會話開始時並未自動加載所有可用的軟件包。事實上,它很有意義,它不是所以我不得不在輸入shell提示符之前輸入require("SparkR"),然後才能真正讀取任何數據幀。 (請注意,"SparkR"中的S是大寫字母;我認爲這可能會導致一些混淆,因爲在所有Google搜索和研究中,並且通過API進行梳理,我確實得出了此解決方案,而SparkR中的許多次都是小寫。)

  3. 我沒有初始化SparkSession。 (Duh!)一旦你需要SparkR包,這是下一步的(必須的),否則你將無法做任何與Spark相關的事情。通過在R shell提示符中鍵入sparkR.session()可以初始化會話。請注意,出於某種原因,sparkR中的s在這裏是小寫的!這真是令人困惑,我希望在未來的更新中確定不一致性。

現在,我能夠在我想用下面的語法任何dataframes閱讀:

data <- read.df("/valid/path/to/parquet/file", "parquet")

0

的sqlContext參數不再需要read.df(「./ examples/src/main/resources/people.parquet」,「parquet」)

檢查這個https://spark.apache.org/docs/latest/api/R/read.df.html

+0

我已經試過了,仍然有同樣的結果!不過謝謝。 – ribs2spare

+0

你可以請顯示錯誤截圖和代碼 –

+0

是的,我已經在那裏包括確切的錯誤。我不會發布太多具體信息,因爲我想保留我公司的IP隱私。 – ribs2spare