首页 > 解决方案 > spark_expect_jobj_class 中的 CSV 文件创建错误

问题描述

我想创建 CSV 文件。在按照 Spark R 代码运行时,会出现错误。

sc <- spark_connect(master = "local", config = conf, version = '2.2.0')
sample_tbl <- spark_read_json(sc,name="example",path="example.json", header = TRUE, memory = FALSE,
                              overwrite = TRUE) 
sdf_schema_viewer(sample_tbl) # to create db schema
df <- spark_dataframe(sample_tbl)
spark_write_table(df, path = "data.csv", header = TRUE, delimiter = ",",
                charset = "UTF-8", null_value = NULL,
                options = list(), mode = NULL, partition_by = NULL)

最后一行给出以下错误

Error in spark_expect_jobj_class(x, "org.apache.spark.sql.DataFrame") : 
  This operation is only supported on org.apache.spark.sql.DataFrame jobjs but found org.apache.spark.sql.Dataset instead.

问题

如何解决 R 中的这个错误?

标签: rapache-sparksparklyr

解决方案


spark_dataframe

用于从 R 对象访问 Spark DataFrame 对象(作为 Java 对象引用)。

换句话说,它用于公开内部 JVM 表示,以便能够与 Scala / Java API 进行交互。它在这里没有用。

使用时,sdf_*spark_methods应该传递tbl_spark对象。只要sample_tbl只包含原子类型,您所需要的就是:

sample_tbl %>% spark_write_csv(path = "data.csv")

否则,您必须重组它(通过扩展或分解复杂字段)或将嵌套结构转换为序列化对象(例如使用to_json)。


推荐阅读