我想创建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中的此错误?
答案 0 :(得分:1)
换句话说,它用于公开内部JVM表示以便能够与Scala / Java API进行交互。在这里没有用。用于访问Spark DataFrame对象(作为 Java对象参考)。
使用sdf_*
或spark_methods
时,应传递tbl_spark
对象。只要sample_tbl
仅包含原子类型,您只需:
sample_tbl %>% spark_write_csv(path = "data.csv")
否则,您必须对其进行重组(通过扩展或分解复杂的字段)或将嵌套结构转换为序列化的对象(例如,使用to_json
)。