【问题标题】:How to process CSV with different columns in CDAP (Datafusion)?如何在 CDAP (Datafusion) 中处理具有不同列的 CSV?
【发布时间】:2020-01-28 07:19:23
【问题描述】:

我有一个案例,我从第三方收到了多个 CSV(很难让他们更改格式),这些 CSV 应该具有相同的列,但有时缺少一个或多个列。如果我使用 CDAP 文件(读取为文本),然后使用牧马人来处理 CSV,牧马人使用以下指令:

parse-as-csv :body '\\t' true
cleanse-column-names 

它会假设读取的所有文件都具有相同的列格式,并且会弄乱列比第一个文件少或多的文件的数据。

到目前为止,我尝试使用 File 读取为 blob 并将输出作为字节使用配置了此指令的 Wrangler:

set-type :body string
parse-as-csv :body '\t' true
cleanse-column-names

但是现在我什至没有任何输出(或错误),所以我不知道如何解析那些非统一文件。 CDAP 能够处理这种情况吗?如果是,怎么做?

【问题讨论】:

    标签: google-cloud-data-fusion cdap


    【解决方案1】:

    您可以使用指令set-column 将新列添加到没有所有需要的列的文件中。总的来说,我建议您查看所有 directives documentation 来预处理您的文件。

    希望对你有帮助。

    【讨论】:

    • 问题是当列不对齐时,例如一个文件我有列 A|B|C|D 而第二个文件的列只有 A|C|D,我怎么能处理这个案子?
    • 在这种情况下,我会使用 Python pandas 来预处理数据;我认为没有直接执行您要求的指令。
    • 如果总是缺少 B 列,那么您可以使用 set-column :B exp:{ ... }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    • 2019-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多