SparkR 说找不到函数 read.df

SparkR says it can't find function read.df

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

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

勾选这个https://spark.apache.org/docs/latest/api/R/read.df.html

我弄清楚问题出在哪里,并且想 post 以防其他人遇到类似问题。基本上我打开了Rshell和运行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后需要附加sparkR包shell!!!我真的是 R 和 sparkR 的新手,老实说,99% 的我正在尝试做的事情,所以我实际上并不知道 R 不会在会话开始时自动加载所有可用的包。实际上,它 不是很有意义。 所以我必须在 shell 提示符中输入 require("SparkR") 才能真正阅读任何内容数据框。 (请注意,"SparkR" 中的 S 是大写的;我认为这可能会导致一些混乱,因为在我为得出此解决方案所做的所有谷歌搜索、研究和 API 梳理中,很多时候SparkR 中的 s 是小写的。)

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

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

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