【问题标题】:How to load array<string> data type from parquet file stored in Amazon S3 to Azure Data Warehouse?如何将存储在 Amazon S3 中的 parquet 文件中的 array<string> 数据类型加载到 Azure 数据仓库?
【发布时间】:2019-11-27 23:53:42
【问题描述】:

我正在处理存储在 Amazon S3 上的 parquet 文件。需要提取这些文件并将其中的数据加载到 Azure 数据仓库中。

我的计划是:

Amazon S3 -> 使用 SAP BODS 将 parquet 文件移动到 Azure Blob -> 在这些 parquet 文件上创建外部表 -> 暂存 -> Fact/Dim 表

现在的问题是,在其中一个 parquet 文件中有一列存储为 array&lt;string&gt;。我可以使用该列的 varchar 数据类型在其上创建外部表,但如果我对该外部表执行任何 sql 查询操作(即选择),则会引发以下错误。

消息 106000,第 16 级,状态 1,第 3 行

HdfsBridge::recordReaderFillBuffer - 遇到意外错误 填充记录读取器缓冲区:ClassCastException:可选组 状态(列表){

重复组包{

optional binary array_element (UTF8);

}

} 不是原始的

我尝试了不同的数据类型,但无法对该外部表运行选择查询。

如果还有其他选择,请告诉我。

谢谢

【问题讨论】:

    标签: azure amazon-s3 hdfs parquet azure-sql-data-warehouse


    【解决方案1】:

    在Azure上,有一个服务叫Azure Data Factory,我觉得可以用在你现在的场景中,如下文Parquet format in Azure Data Factory说的。

    Parquet 格式支持以下连接器:Amazon S3、Azure Blob、Azure Data Lake Storage Gen1、Azure Data Lake Storage Gen2、Azure File Storage、文件系统、FTP、谷歌云存储、HDFS、HTTP 和 SFTP。

    您可以尝试按照教程Load data into Azure SQL Data Warehouse by using Azure Data Factory 将Amazon S3 设置为parquet 格式作为源,直接将数据复制到Azure SQL 数据仓库。由于使用自动架构解析从 parquet 格式文件中读取数据,因此使用 Azure 数据工厂应该很容易完成您的任务。

    希望对你有帮助。

    【讨论】:

    • 感谢 Peter 的回复,但我的问题更多是关于将数组数据类型从镶木地板文件加载到 Azure DW。我尝试使用 ADF,但它为该特定列抛出了不受支持的类型错误。无论哪种方式,该项目都处于搁置状态,所以现在不去追求这个问题。
    猜你喜欢
    • 1970-01-01
    • 2016-03-15
    • 2017-12-16
    • 1970-01-01
    • 2020-11-05
    • 2018-07-18
    • 2017-01-04
    • 2020-03-15
    • 1970-01-01
    相关资源
    最近更新 更多