使用 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 表