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")
我弄清楚问题出在哪里,并且想 post 以防其他人遇到类似问题。基本上我打开了Rshell和运行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后需要附加sparkR包shell!!!我真的是 R 和 sparkR 的新手,老实说,99% 的我正在尝试做的事情,所以我实际上并不知道 R 不会在会话开始时自动加载所有可用的包。实际上,它 不是很有意义。 所以我必须在 shell 提示符中输入 require("SparkR")
才能真正阅读任何内容数据框。 (请注意,"SparkR"
中的 S 是大写的;我认为这可能会导致一些混乱,因为在我为得出此解决方案所做的所有谷歌搜索、研究和 API 梳理中,很多时候SparkR 中的 s 是小写的。)
我没有初始化 SparkSession。 (呃!)一旦你需要 SparkR 包,这是(强制性的)下一步,否则你将无法做任何与 Spark 相关的事情。可以通过在 R shell 提示符中键入 sparkR.session()
来初始化会话。请注意,出于某种原因,sparkR
中的 s 在这里是小写的!这真的很令人困惑,我希望在未来的更新中解决不一致问题。
现在我可以使用以下语法读取我想要的任何数据帧:
data <- read.df("/valid/path/to/parquet/file", "parquet")
正如标题所说。每次我在我正在使用的 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")
我弄清楚问题出在哪里,并且想 post 以防其他人遇到类似问题。基本上我打开了Rshell和运行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后需要附加sparkR包shell!!!我真的是 R 和 sparkR 的新手,老实说,99% 的我正在尝试做的事情,所以我实际上并不知道 R 不会在会话开始时自动加载所有可用的包。实际上,它 不是很有意义。 所以我必须在 shell 提示符中输入
require("SparkR")
才能真正阅读任何内容数据框。 (请注意,"SparkR"
中的 S 是大写的;我认为这可能会导致一些混乱,因为在我为得出此解决方案所做的所有谷歌搜索、研究和 API 梳理中,很多时候SparkR 中的 s 是小写的。)我没有初始化 SparkSession。 (呃!)一旦你需要 SparkR 包,这是(强制性的)下一步,否则你将无法做任何与 Spark 相关的事情。可以通过在 R shell 提示符中键入
sparkR.session()
来初始化会话。请注意,出于某种原因,sparkR
中的 s 在这里是小写的!这真的很令人困惑,我希望在未来的更新中解决不一致问题。
现在我可以使用以下语法读取我想要的任何数据帧:
data <- read.df("/valid/path/to/parquet/file", "parquet")