2016-09-23 63 views
1

我是新来的火花和sparkR,我的问题如下: 当我写下面的代码: 1)。设置环境并启动spark.session()使用sparkR处理数据时,程序真正在哪里运行?

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)。另外,谁能告诉我程序在哪里运行代码“as.DataFrame()”?在我的电脑或我的服务器上设置为spark的standalone_mode。

回答

0

SparkR是Spark的接口。这意味着,一些R里面的函数是由SparkR包为您提供已从R.你知道类似的用户体验重写或许应该看看文档,看看哪些星火功能:https://spark.apache.org/docs/latest/api/R/index.html

这些功能通常摄入SparkDataFrames您可以创建,例如as.DataFrame函数。 SparkDataFrames提供对Spark集群中的SparkDataFrame的引用。

在您的示例中,您创建了本地 R数据帧rundrunif函数在您的R实例中也执行了本地

# executed in your local R instance 
rund <- data.frame(V1 = runif(10000000,100,10000),V2 =runif(10000000,100,10000)) 

df对象却是一个SparkDataFrame,它会在你的星火集群创建。在R中执行as.DataFrame,但实际的SparkDataFrame仅存在于您的群集中。

df <- as.DataFrame(rund) 

为了容易R和火花数据帧之间进行区分,则可以使用class功能:

> class(df) 
[1] "data.frame" 
> class(df.spark) 
[1] "SparkDataFrame" 
attr(,"package") 
[1] "SparkR" 

一般而言,SparkDataFrame可以用作输入的各种功能SparkR包所提供的,例如到sort Spark中的SparkDataFrame。 Spark操作在Spark动作被调用时执行。这种行为的一个例子是collect。它触发Spark中的转换并从Spark集群中检索计算的数据,并在本地R实例中创建一个对应的R数据框。如果你看一下的文档,你可以看到,如果一个函数可以摄取SparkDataFrame:

##S4 method for signature 'SparkDataFrame' 
collect(x, stringsAsFactors = FALSE) 

而且有可能在你的星火集群使用用户定义函数执行自定义R代码里面:https://spark.apache.org/docs/latest/sparkr.html#applying-user-defined-function

+0

谢谢艾克。 我没有关于分布式计算系统领域的相对BG,并且对spark和sparkR是新的,所以我在这几天遭受了很多。 hhaa 如果你有时间,你能帮我提一下我的另一个问题吗? http://stackoverflow.com/questions/39683374/sparkr-cannot-read-data-at-deployed-workers-but-ok-with-local-machine –

+0

乐于帮助,欢迎来到Stack Overflow。如果此答案或任何其他人解决了您的问题,请将其标记为已接受。 – Aeck

相关问题