正如标题所说的那样。每次我在RedHat机器上启动SparkR shell我正在使用并尝试使用函数read.df(),它说它无法找到该函数。我正在使用SparkR 2.0,如果这有帮助的话。
更具体地说,这是我尝试输入的内容:
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 :(得分:0)
不再需要sqlContext参数read.df(“./ examples / src / main / resources / people.parquet”,“parquet”)
答案 1 :(得分:0)
我弄清楚问题是什么,并且发现如果其他人有类似的问题,我会发布它。基本上我打开了R shell,然后运行了install.packages("devtools")
。这允许我直接从github安装sparkR包,如下所示:devtools::install_github("/apache/spark/R/pkg")
。那很有效。还有其他一些小细节,比如使用R的setRepositories()
函数来确保我已启用所有repos下载devtools
。
我输错了函数。从不同的版本中有很多相互矛盾的文档(我注意到这是与Spark相关的一种趋势;在信任任何文档之前检查版本!)。正确的语法是read.df("/path/to/file", "parquet")
,其中"parquet"
可以是json或您正在阅读的任何文件类型。
打开R shell后我需要附上sparkR包!我真的很喜欢R和sparkR,老实说99%我正在尝试做的事情,所以我实际上并不知道R在会话开始时没有自动加载所有可用的包。实际上,很有意义的是没有。所以我必须在shell {1}中输入require("SparkR")
才能真正读入任何数据帧。 (请注意,"SparkR"
中的S是大写的;我认为这可能会导致一些混乱,因为在所有的谷歌搜索和研究以及通过API进行梳理,我做到了这个解决方案,很多时候是SparkR是小写的。)
我没有初始化SparkSession。 (Duh!)一旦你需要SparkR包,这是(强制性的)下一步,否则你将无法做任何与Spark有关的事情。可以通过在R shell提示符中键入sparkR.session()
来初始化会话。请注意,出于某种原因,sparkR
中的s在这里是小写的!这真的令人困惑,我希望在未来的更新中不一致是固定的。
现在我可以使用以下语法读入我想要的任何数据帧:
data <- read.df("/valid/path/to/parquet/file", "parquet")