【问题标题】:Why is creating CSV file in Sparklyr R shows an Error?为什么在 Sparklyr R 中创建 CSV 文件会显示错误?
【发布时间】:2019-02-15 08:31:38
【问题描述】:

简介

我通过引用Link-1 编写了以下 R 代码。在这里,Sparklyr 包在 R 编程中用于从 JSON 文件中读取大量数据。但是,在创建 CSV 文件时,它显示了错误。

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
sample_tbl %>% spark_write_csv(path = "data.csv") # To write CSV file

最后一行显示以下错误。数据集包含不同的数据类型。如果需要,我可以显示数据库模式。它包含嵌套的数据列。

错误

Error: java.lang.UnsupportedOperationException: CSV数据源不支持struct,media:array,display_url:string,expanded_url:string,id:bigint,id_str:string,indices:array,media......

问题

如何解决这个错误?是由于不同的数据类型还是深层 2 到 3 嵌套列?任何帮助将不胜感激。

【问题讨论】:

    标签: r apache-spark sparklyr


    【解决方案1】:

    您的数据框似乎具有数组数据类型,CSV 不支持。对于这种情况,CSV 文件似乎不可能包含数组或其他嵌套结构。

    因此,如果您希望您的数据是人类可读的文本,请写成 Excel 文件。

    请注意,Excel CSV(尽管非常特殊)支持 CSV 中使用“\n”的数组 引号内,但您必须将“\r\n”行用作 EOL(Windows EOL)。

    【讨论】:

    • 还值得指出的是,这里不仅仅是数组。 OPs 数据(stackoverflow.com/q/52194942/6910411stackoverflow.com/q/52263836/6910411)包含深度嵌套的结构,实际上没有 CSV 等价物。
    • @rani 另一个问题还是有点不清楚,但据我了解,还不够。要写入 csv,您只需要原子类型(字符串、整数、小数、双精度、浮点数、布尔值) - 不允许使用 structsarrays。这意味着您必须定义使用爆炸和嵌套访问器的某种组合(可能编写 Scala 扩展)或序列化字段来重塑数据。仅 Schema 是模棱两可的,因此您应该真正提供示例输入和预期输出。
    猜你喜欢
    • 2018-07-20
    • 2017-04-09
    • 2022-11-07
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    • 2019-11-14
    • 2020-05-22
    • 1970-01-01
    相关资源
    最近更新 更多