You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

向Azure Data Explorer写入数据时遇StacklessClosedChannelException问题求助

问题:Databricks写入Azure Data Explorer(ADX)时出现StacklessClosedChannelException异常

问题背景

尝试将数据从Databricks写入ADX表时出现异常,已确认ADX集群开放所有网络,且通过nslookup和端点连接状态验证Databricks与ADX的连通性正常。

报错信息

org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 3.0 failed 4 times, most recent failure: Lost task 0.3 in stage 3.0 (TID 12) (10.139.64.7 executor 0): java.io.UncheckedIOException: io.netty.channel.StacklessClosedChannelException

示例代码

spark = SparkSession.builder \
    .appName("ADXWriter") \
    .getOrCreate()

kustoOptions = {"kustoCluster":"https://", "kustoDatabase" : "", "kustoTable" : "", "kustoAadAppId":"" ,
 "kustoAadAppSecret":"", "kustoAadAuthorityID":""} 

df.write. \
  format("com.microsoft.kusto.spark.datasource"). \
  option("kustoCluster",kustoOptions["kustoCluster"]). \
  option("kustoDatabase",kustoOptions["kustoDatabase"]). \
  option("kustoTable", kustoOptions["kustoTable"]). \
  option("kustoAadAppId",kustoOptions["kustoAadAppId"]). \
  option("kustoAadAppSecret",kustoOptions["kustoAadAppSecret"]). \
  option("kustoAadAuthorityID",kustoOptions["kustoAadAuthorityID"]). \
  mode("Append"). \
  save()

环境信息

  • Databricks runtime: 14.1(包含Apache Spark 3.5.0、Scala 2.12)
  • 依赖包版本:
    • com.azure:azure-identity:1.13.0
    • com.microsoft.azure.kusto:kusto-data:5.1.0
    • com.microsoft.azure.kusto:kusto-ingest:5.1.0
    • com.microsoft.azure.kusto:kusto-spark_3.0_2.12:5.1.0

排查与解决思路

  • 版本兼容性检查:当前使用的kusto-spark_3.0_2.12:5.1.0是针对Spark 3.0的版本,而Databricks Runtime 14.1搭载Spark 3.5.0,版本不匹配可能引发Netty通道异常。建议升级到适配Spark 3.5的Kusto Spark连接器版本(如kusto-spark_3.5_2.12对应兼容版本)。
  • 调整写入并行度与超时:添加option("spark.sql.shuffle.partitions", "10")降低任务并行度,避免并发连接过多导致通道关闭;同时可设置option("kustoRequestTimeout", "300")(单位:秒)延长请求超时时间。
  • 验证AAD应用权限:确认用于认证的AAD应用拥有ADX目标数据库的Ingestor角色权限,以及目标表的写入权限,权限不足可能导致连接中途中断。
  • 排查依赖冲突:检查azure-identity:1.13.0与Kusto相关依赖的兼容性,建议使用Kusto Spark连接器官方推荐的azure-identity版本,避免依赖冲突引发Netty底层异常。
  • 切换批量写入模式:添加option("writeMode", "BULK")启用批量Ingest模式,该模式相比默认流式写入更稳定,适合大数据量场景,能减少连接异常概率。

内容的提问来源于stack exchange,提问作者SONIA_29

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 11:53:30