【问题标题】:When use sparkR to process data, where is the place that the programme really run?使用 sparkR 处理数据时,程序真正运行的地方在哪里?
【发布时间】:2016-09-24 02:27:37
【问题描述】:

我是 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)。另外,谁能告诉我程序到底在哪里运行代码“as.DataFrame()”?在我的计算机或我的服务器上设置为独立模式的火花。

【问题讨论】:

    标签: r apache-spark sparkr


    【解决方案1】:

    SparkR 是 Spark 的接口。这意味着某些 R 函数被 SparkR 包覆盖,以提供您已经从 R 中了解的类似用户体验。您可能应该查看文档以了解哪些 Spark 函数可用:@987654321 @

    这些函数通常会提取您可以创建的 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,它将在您的 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 包必须提供的各种功能的输入,例如,groupsort 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/sparkr.html#applying-user-defined-function

    【讨论】:

    • 谢谢艾克。我没有分布式计算系统领域的相关bg,并且对spark和sparkR不熟悉,所以这几天我受了很多苦。哈哈如果你有时间,你能帮我参考我的另一个问题吗? stackoverflow.com/questions/39683374/…
    • 很高兴为您提供帮助,欢迎来到 Stack Overflow。如果此答案或任何其他答案解决了您的问题,请将其标记为已接受。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    相关资源
    最近更新 更多