【问题标题】:Move data from Data Lake Store (JSON file ) to Azure Search using Azure Data Factory使用 Azure 数据工厂将数据从 Data Lake Store(JSON 文件)移动到 Azure 搜索
【发布时间】:2023-03-14 04:47:01
【问题描述】:

我正在尝试使用数据工厂将 json 文件从 Azure 数据湖移动到 Azure 搜索。 但它显示以下错误,

复制活动在源端遇到用户错误:ErrorCode=UserErrorSourceDataContainsMoreColumnsThanDefined,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Error found when processing 'Csv/Tsv Format Text' source 'file.json' with第 1 行:发现的列数超过预期的列数:52.,Source=Microsoft.DataTransfer.Common,'。

我们如何将数据从 json 文件移动到 Azure 搜索?

更新1: 我在源中使用了 JSON 格式,但在目标 Azure 搜索中,createddate 列是 DateTimeOffset 类型列(String -> DateTimeOffset)。 所以得到以下错误,

复制活动在源端遇到用户错误:ErrorCode=UserErrorInvalidDataValue,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Column 'createddate' contains an invalid value '1/5/2017 2:03:下午 55 点”。无法将 '1/5/2017 2:03:55 PM' 转换为 'DateTime' 格式为 'yyyy-MM-dd HH:mm:ss.fffffff'.,Source=Microsoft.DataTransfer.Common,''Type= System.FormatException,Message=String 未被识别为有效的 DateTime.,Source=mscorlib,'。

我尝试更改 Soure 端的日期时间格式,但由于 json 文件没有任何效果。当我们尝试从 json 获取数据时,所有数据都是字符串类型的。

更新2:

当我完成那个日期时间错误时,接下来的错误就来了

复制活动在接收器端遇到用户错误:ErrorCode=UserErrorAzuerSearchOperation,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=将数据写入 Azure 搜索索引'searchindex'时发生错误。CloudException RequestId:'153be0ce -0bda-4722-8c9e-951b5325eaa8'。状态代码:'BadRequest'。,Source=Microsoft.DataTransfer.ClientLibrary.AzureSearch,''Type=Microsoft.Rest.Azure.CloudException,Message=请求无效。详细信息:操作:0:文档键不能丢失或为空。

请建议我一个解决方案来克服这个问题.. 提前致谢!

【问题讨论】:

  • 您已经问过这个确切的问题。请不要发两次。
  • 之前的已经删除了

标签: json azure azure-data-factory azure-cognitive-search


【解决方案1】:

您在输入 ADLS 数据集中将源格式指定为“TextFormat”而不是“JsonFormat”。请参阅JSON format 了解相应支持的设置以及详细信息和示例。

如果您使用的是 ADF v1,您可以通过 copy wizard 尝试作者,它将指导您完成 UI 中的配置。

【讨论】:

  • 我也使用了 JSON 格式,这也显示了 DateTime 列的错误。复制活动在源端遇到用户错误:ErrorCode=UserErrorInvalidDataValue,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Column 'createddate' contains an invalid value '1/5/2017 2:03:55 PM' .无法将 '1/5/2017 2:03:55 PM' 转换为 'DateTime' 格式为 'yyyy-MM-dd HH:mm:ss.fffffff'.,Source=Microsoft.DataTransfer.Common,''Type= System.FormatException,Message=String 未被识别为有效的 DateTime.,Source=mscorlib,'。
【解决方案2】:

我使用 createddate.Value.ToString("yyyy-MM-dd HH:mm:ss.ffffff") 而不是 createddate.ToString("yyyy-MM-dd HH:mm:ss.fffffff") 和它工作正常,因为 createddate 是一个可为空的列 (Nullable)。

createddate.Value.ToString("yyyy-MM-dd HH:mm:ss.fffffff")

【讨论】:

    【解决方案3】:

    “文档键不能丢失或为空”错误表示要插入 Azure 搜索的行中的 Azure 搜索索引键为空。您能否再次检查 Key 列是否在源端提供且始终不为空?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-01
      • 2020-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-19
      • 1970-01-01
      • 2021-05-20
      相关资源
      最近更新 更多