SparkR说无法找到函数read.df

时间:2016-09-30 18:27:52

标签: apache-spark centos redhat sparkr

正如标题所说的那样。每次我在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"

2 个答案:

答案 0 :(得分:0)

不再需要sqlContext参数read.df(“./ examples / src / main / resources / people.parquet”,“parquet”)

选中此https://spark.apache.org/docs/latest/api/R/read.df.html

答案 1 :(得分:0)

我弄清楚问题是什么,并且发现如果其他人有类似的问题,我会发布它。基本上我打开了R shell,然后运行了install.packages("devtools")。这允许我直接从github安装sparkR包,如下所示:devtools::install_github("/apache/spark/R/pkg")。那很有效。还有其他一些小细节,比如使用R的setRepositories()函数来确保我已启用所有repos下载devtools

但是,我之前完成了所有这些工作。真正的问题有三个:

  1. 我输错了函数。从不同的版本中有很多相互矛盾的文档(我注意到这是与Spark相关的一种趋势;在信任任何文档之前检查版本!)。正确的语法是read.df("/path/to/file", "parquet"),其中"parquet"可以是json或您正在阅读的任何文件类型。

  2. 打开R shell后我需要附上sparkR包!我真的很喜欢R和sparkR,老实说99%我正在尝试做的事情,所以我实际上并不知道R在会话开始时没有自动加载所有可用的包。实际上,很有意义的是没有。所以我必须在shell {1}中输入require("SparkR")才能真正读入任何数据帧。 (请注意,"SparkR"中的S是大写的;我认为这可能会导致一些混乱,因为在所有的谷歌搜索和研究以及通过API进行梳理,我做到了这个解决方案,很多时候是SparkR是小写的。)

  3. 我没有初始化SparkSession。 (Duh!)一旦你需要SparkR包,这是(强制性的)下一步,否则你将无法做任何与Spark有关的事情。可以通过在R shell提示符中键入sparkR.session()来初始化会话。请注意,出于某种原因,sparkR中的s在这里是小写的!这真的令人困惑,我希望在未来的更新中不一致是固定的。

  4. 现在我可以使用以下语法读入我想要的任何数据帧:

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