0

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

我的计划是:

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

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

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

HdfsBridge::recordReaderFillBuffer - 填充记录读取器缓冲区时遇到意外错误:ClassCastException: optional group status (LIST) {

重复组包{

optional binary array_element (UTF8);

}

} 不是原始的

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

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

谢谢

4

1 回答 1

0

在 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、Google Cloud Storage、HDFS、HTTP 和 SFTP。

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

希望能帮助到你。

于 2019-07-19T07:14:19.167 回答