我是spark和sparkR的新手,我的问题如下: 当我写下面的代码时: 1)。设置环境并启动spark.session()
sparkR.session(master = "my/spark/master/on/one/server/standaloneMode", , sparkConfig = list(spark.driver.memory="4g",spark.sql.warehouse.dir = "my/hadoop_home/bin",sparkPackages = "com.databricks:spark-avro_2.11:3.0.1"))
然后我写道:
rund <- data.frame(V1 = runif(10000000,100,10000),V2 =runif(10000000,100,10000))
df <- as.DataFrame(rund)
事情就是这样:
1)。程序在哪里进行“分裂”?在我的本地机器或服务器上?
2)。此外,谁能告诉我程序在哪里运行代码&#34; as.DataFrame()&#34;?在我的计算机或我的服务器上设置为spark的standalone_mode。
答案 0 :(得分:0)
SparkR 是Spark的界面。这意味着SparkR包中的某些R函数被重写,以提供您从R中已经知道的类似用户体验。您可能应该查看文档以查看哪些Spark函数可用:{{ 3}}
这些功能通常会提取您可以创建的 SparkDataFrames ,例如使用as.DataFrame
功能。 SparkDataFrames提供对Spark群集中SparkDataFrame的引用。
在您的示例中,您创建了一个本地 R数据框rund
。 runif
函数也在R实例中执行本地。
# executed in your local R instance
rund <- data.frame(V1 = runif(10000000,100,10000),V2 =runif(10000000,100,10000))
df
对象是SparkDataFrame
,它将在 Spark群集中创建。 as.DataFrame
在R中执行,但实际的SparkDataFrame仅存在于您的群集中。
df <- as.DataFrame(rund)
为了轻松区分R和Spark数据帧,您可以使用class
函数:
> class(df)
[1] "data.frame"
> class(df.spark)
[1] "SparkDataFrame"
attr(,"package")
[1] "SparkR"
通常,SparkDataFrame可以用作SparkR包必须提供的各种功能的输入,例如用于组或排序 Spark中的SparkDataFrame。调用Spark操作时执行Spark操作。此类操作的示例是collect
。它触发Spark中的转换并从Spark群集中检索计算数据,并在本地R实例中创建相应的R数据帧。如果您查看文档,可以看到函数是否可以摄取SparkDataFrame:
##S4 method for signature 'SparkDataFrame'
collect(x, stringsAsFactors = FALSE)
此外,可以使用用户定义的函数在您的Spark集群中执行自定义R代码:https://spark.apache.org/docs/latest/api/R/index.html。