有人对SparkR vs sparklyr的优缺点有所概述吗?谷歌没有产生任何令人满意的结果,两者看起来非常相似.尝试两种方式,SparkR看起来更麻烦,而sparklyr非常简单(既可以安装也可以使用,特别是使用dplyr输入).sparklyr只能用于并行运行dplyr函数或"普通"R代码吗?
最好
我有R - 3.2.1的最后一个版本.现在我想在R上安装SparkR.执行后:
> install.packages("SparkR")
Run Code Online (Sandbox Code Playgroud)
我回来了:
Installing package into ‘/home/user/R/x86_64-pc-linux-gnu-library/3.2’
(as ‘lib’ is unspecified)
Warning in install.packages :
package ‘SparkR’ is not available (for R version 3.2.1)
Run Code Online (Sandbox Code Playgroud)
我也在我的机器上安装了Spark
Spark 1.4.0
Run Code Online (Sandbox Code Playgroud)
我怎么能解决这个问题?
我想用R编程语言处理Apache Parquet文件(在我的例子中,在Spark中生成).
是否有R读卡器?或者正在进行一项工作?
如果没有,那么到达那里最方便的方式是什么?注意:有Java和C++绑定:https://github.com/apache/parquet-mr
我是新来的火花,sparkSql当我遇到这两个命令时,我正在尝试使用python中的一些命令:
createOrReplaceTempView()和registerTempTable().
这两个命令有什么区别?它们似乎具有相同的功能集.
经过漫长而艰难的SparkR安装过程后,我遇到了启动SparkR的新问题.
我的设置
R 3.2.0
RStudio 0.98.1103
Rtools 3.3
Spark 1.4.0
Java Version 8
SparkR 1.4.0
Windows 7 SP 1 64 Bit
Run Code Online (Sandbox Code Playgroud)
现在我尝试在R中使用以下代码:
library(devtools)
library(SparkR)
Sys.setenv(SPARK_MEM="1g")
Sys.setenv(SPARK_HOME="C:/spark-1.4.0")
sc <- sparkR.init(master="local")
Run Code Online (Sandbox Code Playgroud)
我收到以下信息:
JVM is not ready after 10 seconds
Run Code Online (Sandbox Code Playgroud)
我还试图添加一些系统变量,如spark path或java path.
你有什么建议让我解决这个问题.
测试本地主机后,下一步是在我运行的hadoop集群上开始测试.
我想N在SparkR中的DataFrame中添加一个填充了字符的列.我会像非SparkR代码那样做:
df$new_column <- "N"
Run Code Online (Sandbox Code Playgroud)
但是使用SparkR,我收到以下错误:
Error: class(value) == "Column" || is.null(value) is not TRUE
Run Code Online (Sandbox Code Playgroud)
我已经尝试过疯狂的东西来管理它,我能够使用另一个(现有的)创建一个列df <- withColumn(df, "new_column", df$existing_column),但这个简单的事情,不...
有帮助吗?
谢谢.
我希望能够在Scala jar文件中打包DataFrames并在R中访问它们.最终目标是创建一种方法来访问Python,R和Scala中特定且经常使用的数据库表,而无需为每个表编写不同的库. .
为此,我在Scala中创建了一个jar文件,其中的函数使用SparkSQL库来查询数据库并获取我想要的DataFrame.我希望能够在R中调用这些函数而不创建另一个JVM,因为Spark已经在R中的JVM上运行.但是,JVM Spark使用的内容未在SparkR API中公开.为了使其可访问并使Java方法可调用,我修改了SparkR包中的"backend.R","generics.R","DataFrame.R"和"NAMESPACE"并重新构建了包:
在"backend.R"中,我制作了"callJMethod"和"createJObject"正式方法:
setMethod("callJMethod", signature(objId="jobj", methodName="character"), function(objId, methodName, ...) {
stopifnot(class(objId) == "jobj")
if (!isValidJobj(objId)) {
stop("Invalid jobj ", objId$id,
". If SparkR was restarted, Spark operations need to be re-executed.")
}
invokeJava(isStatic = FALSE, objId$id, methodName, ...)
})
setMethod("newJObject", signature(className="character"), function(className, ...) {
invokeJava(isStatic = TRUE, className, methodName = "<init>", ...)
})
Run Code Online (Sandbox Code Playgroud)
我修改了"generics.R"也包含这些功能:
#' @rdname callJMethod
#' @export
setGeneric("callJMethod", function(objId, methodName, ...) { standardGeneric("callJMethod")})
#' @rdname newJobject
#' @export
setGeneric("newJObject", function(className, ...) {standardGeneric("newJObject")})
Run Code Online (Sandbox Code Playgroud)
然后我将这些函数的导出添加到NAMESPACE文件中:
export("cacheTable", …Run Code Online (Sandbox Code Playgroud) 据我了解,这两个包为 Apache Spark 提供了相似但主要不同的包装函数。Sparklyr 较新,但仍需要在功能范围内增长。因此,我认为目前需要同时使用这两个软件包才能获得完整的功能范围。
由于这两个包本质上都包装了对 Scala 类的 Java 实例的引用,因此我猜应该可以并行使用这些包。但实际上有可能吗?你的最佳实践是什么?
我有一个SparkSQL DataFrame.
此数据中的某些条目为空,但它们的行为不像NULL或NA.我怎么能删除它们?有任何想法吗?
在RI中可以很容易地删除它们,但在sparkR中它表示S4系统/方法存在问题.
谢谢.
zeppelin R解释器文档说明:
If you return a data.frame, Zeppelin will attempt to display it using Zeppelin's built-in visualizations.
Run Code Online (Sandbox Code Playgroud)
这可以在文档示例中看到:
但是,当我尝试从我的zeppelin 0.6.0笔记本运行相同的R命令时,我看到以下内容:
知道为什么我没有看到表格输出吗?
sparkr ×10
apache-spark ×8
r ×8
sparklyr ×2
parquet ×1
pyspark ×1
pyspark-sql ×1
rstudio ×1
scala ×1
windows ×1