使用 ADF 复制 Azure SQL DW 中的数据(根据文档,使用 Polybase 进行分阶段复制不起作用)

Posted

技术标签:

【中文标题】使用 ADF 复制 Azure SQL DW 中的数据(根据文档,使用 Polybase 进行分阶段复制不起作用)【英文标题】:Copy data in Azure SQL DW by using ADF(Staged copy by using Polybase dosen't work according to documentation) 【发布时间】:2020-03-18 18:08:37 【问题描述】:

尝试使用 Azure 数据工厂将数据湖 (gen2) 中的 csv 文件加载到 Azure Synapse。源文件具有“(双引号)作为转义字符。这超出了将 polybase 直接连接到 Data Lake 的数据限制。我通过以下文档设置了暂存副本

"enableStaging": true,
  "stagingSettings": 
                                "linkedServiceName": 
                                    "referenceName": "LS_StagedCopy",
                                    "type": "LinkedServiceReference"
                                ,
                                "path": "myContainer/myPath",
                                "enableCompression": false
                            

调试管道后,我仍然得到

Class=16,Number=107090,State=1,Message=HdfsBridge::recordReaderFillBuffer - Unexpected error encountered filling record reader buffer: HadoopExecutionException: Too many columns in the line.,,],

我确实看到 ADF 在我在暂存副本中提供的路径中创建了一个临时文件夹,但它似乎没有执行加载数据所需的转换。我错过了什么吗?

链接到文档Copy and transform data in Azure SQL Data Warehouse by using Azure Data Factory

【问题讨论】:

【参考方案1】:

问题很可能是您的数据。检查你的分隔符。希望它不是“,”或类似这样的明显内容。当一列的文本包含许多“,”时,这是一个常见问题,ADF 会将其解释为新列。 使用较小的干净 csv 对其进行测试,然后从那里开始。

【讨论】:

我使用管道作为分隔符并使用文件类型作为 txt。仍然收到此错误。知道如何解决这个问题吗?

以上是关于使用 ADF 复制 Azure SQL DW 中的数据(根据文档,使用 Polybase 进行分阶段复制不起作用)的主要内容,如果未能解决你的问题,请参考以下文章

在 Azure 存储中创建文件列表并使用 ADF 将其发送到 sql 表

Azure ADF 管道无法连接到 Azure SQL

使用 ADF 将 azure blob 文件复制到 azure synapse

如何在 Azure 数据工厂中执行 SQL 查询

Azure ADF 中具有动态源的增量复制 cdc 记录

如何在 Azure ADF Pipelines 中更改 ADF 接收器数据集 Parquet 文件数据类型