2016-09-30 74 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