运行 Spark Notebook 的 Azure Synapse Pipeline 生成随机错误

分享于2022年07月17日 azure-synapse c# spark-notebook 问答
【问题标题】:运行 Spark Notebook 的 Azure Synapse Pipeline 生成随机错误(Azure Synapse Pipeline running Spark Notebook Generates Random Errors)
【发布时间】:2022-07-11 16:51:53
【问题描述】:

我正在处理 Azure Synapse Spark 笔记本中大约 19,710 个包含 IIS 日志文件的目录。每个目录中有 3 个 IIS 日志文件。笔记本读取目录中的 3 个文件,并将它们从分隔的文本转换为 Parquet。没有分区。但有时我会莫名其妙地收到以下两个错误。

Azure Synapse Pipeline running Spark Notebook Generates Random Errors

{
    "errorCode": "2011",
    "message": "An error occurred while sending the request.",
    "failureType": "UserError",
    "target": "Call Convert IIS To Raw Data Parquet",
    "details": []
}

当我收到上述错误时,所有数据都已成功写入 Azure Data Lake Storage Gen2 中的相应文件夹。

有时我会得到 Azure Synapse Pipeline running Spark Notebook Generates Random Errors

{
    "errorCode": "6002",
    "message": "(3,17): error CS0234: The type or namespace name 'Spark' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?)\n(4,17): error CS0234: The type or namespace name 'Spark' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?)\n(12,13): error CS0103: The name 'spark' does not exist in the current context",
    "failureType": "UserError",
    "target": "Call Convert IIS To Raw Data Parquet",
    "details": []
}

当我收到上述错误时,没有任何数据被成功写入 Azure Data Lake Storage Gen2 中的相应文件夹。

在这两种情况下,您都可以看到笔记本确实运行了一段时间。 我在 spark 笔记本上启用了 1 次重试,它是一个 pyspark 笔记本,它使用 C# %%csharp 为参数执行 python 其余逻辑。 Spark 池很小(4 核/32GB),有 5 个节点。

笔记本中唯一的转换是将字符串列转换为时间戳。

var dfConverted = dfparquetTemp.WithColumn("Timestamp",Col("Timestamp").Cast("timestamp"));

当我说这是随机的,管道当前正在运行,在处理 215 个目录后,有 2 个是第一个失败,一个是第二个。

任何想法或建议将不胜感激。

  • 看到另一个随机错误,我将在管道完成后进行调查 "errorCode": "6002", "message": "[2022-03-02T12:09:41.8223708Z] [vm-18712171] [Error] [JvmBridge] JVM method execution failed: Nonstatic method 'collectToPython' failed for class '37' when called with no arguments\n[2022-03-02T12:09:41.8227074Z] [vm-18712171] [Error] [JvmBridge] java.io.IOException: Stream is corrupted

【解决方案1】:

运行 113 小时后正常(几乎完成)我仍然收到以下错误,但看起来所有数据都已写出

计数 1

{
    "errorCode": "6002",
    "message": "(3,17): error CS0234: The type or namespace name 'Spark' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?)\n(4,17): error CS0234: The type or namespace name 'Spark' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?)\n(12,13): error CS0103: The name 'spark' does not exist in the current context",
    "failureType": "UserError",
    "target": "Call Convert IIS To Raw Data Parquet",
    "details": []
}

计数 1

{
    "errorCode": "6002",
    "message": "Exception: Failed to create Livy session for executing notebook. LivySessionId: 4419, Notebook: Convert IIS to Raw Data Parquet.\n--> LivyHttpRequestFailure: Something went wrong while processing your request. Please try again later. HTTP status code: 500. Trace ID: e0860852-40e6-498f-b2df-4eff9fee504a.",
    "failureType": "UserError",
    "target": "Call Convert IIS To Raw Data Parquet",
    "details": []
}

计数 17

{
    "errorCode": "2011",
    "message": "An error occurred while sending the request.",
    "failureType": "UserError",
    "target": "Call Convert IIS To Raw Data Parquet",
    "details": []
}

不确定这些错误是关于什么的,当然我会重新运行管道中的特定数据,看看这是一次性的还是继续在这些特定数据上发生。但似乎这些错误或发生在将数据写入 parquet 格式之后。