【问题标题】:Databricks and Polybase cannot parse CSV including polygonDatabricks 和 Polybase 无法解析包含多边形的 CSV
【发布时间】:2021-01-22 14:49:34
【问题描述】:

我有 Azure 数据工厂,它通过 HTTP 连接读取 CSV 并将数据存储到 Azure Storage Gen2。文件格式为 UTC-8。由于多边形定义,文件似乎以某种方式损坏。

文件内容如下:

Shape123|"MULTIPOLYGON (((496000 6908000, 495000 6908000, 495000 6909000, 496000 6909000, 496000 6908000)))"|"红色"|"长"|"208336"|"5"|-1" /p>

问题 1: Polybase 报错编码,无法读取文件。

问题 2: Databricks 数据框无法处理此问题,它可以切割行并仅读取 "Shape123|"MULTIPOLYGON (((496000 6908000,"

快速解决方案: 使用 Notepad++ 打开 CSV 文件并重新确认编码为 UTC-8。然后 Polybase 就可以处理了。

问题: 修复 CSV 文件的自动方法是什么? 如果无法修复 CSV 文件,如何使数据框处理整行?

【问题讨论】:

    标签: azure-data-factory azure-databricks


    【解决方案1】:

    Polybase 可以很好地处理 UTF8 文件和各种分隔符。您是否创建了带有管道分隔符、双引号作为字符串分隔符的外部文件格式,诸如此类?

    CREATE EXTERNAL FILE FORMAT ff_pipeFileFormatSHAPE
    WITH (
        FORMAT_TYPE = DELIMITEDTEXT,
        FORMAT_OPTIONS (
            FIELD_TERMINATOR = '|',
            STRING_DELIMITER = '"',
            ENCODING = 'UTF8' 
            )
    );
    GO
    
    CREATE EXTERNAL TABLE shape_data (
        col1                VARCHAR(20),
        col2                VARCHAR(8000),
        col3                VARCHAR(20),
        col4                VARCHAR(20),
        col5                VARCHAR(20),
        col6                VARCHAR(20),
        col7                VARCHAR(20)
    )
    WITH (
        LOCATION = 'yourPath/shape/shape working.txt',
        DATA_SOURCE = ds_azureDataLakeStore,
        FILE_FORMAT = ff_pipeFileFormatSHAPE,
        REJECT_TYPE = VALUE,
        REJECT_VALUE = 0
    );
    

    我的结果:

    【讨论】:

    • 文件的编码似乎有问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2021-06-20
    • 2015-05-21
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    • 2018-11-25
    相关资源
    最近更新 更多