【问题标题】:How to access a DataFrame created with PySpark using SparkR?如何使用 SparkR 访问使用 PySpark 创建的 DataFrame?
【发布时间】:2018-10-05 12:38:00
【问题描述】:

我在 Databricks 上创建了一个 PySpark DataFrame。

%python 
# File location and type
file_location = "/FileStore/tables/file.csv"
file_type = "csv"

# CSV options
infer_schema = "true"
first_row_is_header = "true"
delimiter = ";"

# The applied options are for CSV files. For other file types, these will be ignored.
df1 = spark.read.format(file_type) \
  .option("inferSchema", infer_schema) \
  .option("header", first_row_is_header) \
  .option("sep", delimiter) \
  .load(file_location)

现在我想将 df1 与 SparkR 一起使用

%r
library('SparkR')
df1

sparkR 无法使用或找到由 PySpark 创建的 df1。

Error in eval(parse(text = DATABRICKS_CURRENT_TEMP_CMD__)) : 
Error in eval(parse(text = DATABRICKS_CURRENT_TEMP_CMD__)) : 
  object 'df1' not found

如何使用 sparkR 访问 pySpark 数据帧,反之亦然?还是每个 Dataframe 都是完全不同的对象?

【问题讨论】:

  • 你找到答案了吗?

标签: pyspark sparkr apache-spark-dataset


【解决方案1】:

你定义了 df

df = spark.read.format(file_type) \
  .option("inferSchema", infer_schema) \
  .option("header", first_row_is_header) \
  .option("sep", delimiter) \
  .load(file_location)

为什么在创建 DataFrame df 时使用 df1?

%r
library('SparkR')
df1

回答这个问题

如何使用 sparkR 访问 pySpark 数据帧,反之亦然?还是每个 Dataframe 都是完全不同的对象?

参考

【讨论】:

  • 很抱歉打错字了,假设在两个代码 sn-ps 中都是 df1。感谢您提供这些链接:我会仔细阅读它们。
  • 抱歉,您的参考资料并未提供问题的答案。它们是关于如何使用 sparkR 和 Dataframes,而不是关于如何使用 sparkR 访问由 pySpark 创建的 Dataframe。
  • 如果您阅读了这些文章,那么您必须意识到,您无法访问。
  • 正如我所说,我仔细阅读了参考资料,但作为一个新手,我可能无法像您一样理解我阅读的内容。根据 Spark 堆栈图(在您指出的第一个参考资料上),sparkR 和 PySpark 都是两种 API 语言,它们通常从分析 API 访问 SQL、Dataframe 和 Dataset。我的理解是两种语言 API 都与同一个 Dataframe API 进行交互,因此我不明白为什么如果 Dataframe 对象是由一种或另一种语言实例化的,它应该是不同的。你能解释一下我在想什么吗?谢谢!
【解决方案2】:

您无法通过 R 直接访问数据框,因为它是在不同的语言工作区中创建的。不过,有一种方法可以将其复制到 R:通过临时视图。

首先从 pyspark 数据框创建一个临时视图:

%py 
df1.createOrReplaceTempView('pysp_df')

然后使用sql(.) 函数将其加载到 R

%r 
library(SparkR)
df1 <- sql('select * from pysp_df')

请注意,它是一个不同的对象,因此如果您想使用 pyspark 使用它,您必须以相同的方式将其传输回 pyspark。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-08
    • 2016-05-02
    • 2018-08-31
    • 1970-01-01
    相关资源
    最近更新 更多