【问题标题】:Apache Spark Connector for SQL Server and Azure SQL用于 SQL Server 和 Azure SQL 的 Apache Spark 连接器
【发布时间】:2021-06-28 09:26:15
【问题描述】:

我正在尝试使用此连接器 - com.microsoft.azure:spark-mssql-connector_2.12_3.0:1.0.0 将数据从 Azure Databricks 写入 Azure SQL,但收到以下错误消息 -

作业因阶段失败而中止:阶段 1.0 中的任务 0 失败 4 次,最近一次失败:阶段 1.0 中丢失任务 0.3(TID 4、10.139.64.4、执行程序 0):java.lang.NoClassDefFoundError: com/microsoft /sqlserver/jdbc/ISQLServerBulkData

此 spark 连接器是否与 Azure Databricks 一起使用到 Azure SQL?有人测试过吗?

【问题讨论】:

    标签: azure apache-spark azure-databricks


    【解决方案1】:

    由于某种原因,Microsoft 只发布了连接器本身的 jar,并且不包含连接器所需的 JDBC 驱动程序。如果您自己构建代码,构建系统会生成 assembly 工件,但可以使用它,但它没有发布。您可以通过显式添加 JDBC 驱动程序(com.microsoft.sqlserver:mssql-jdbc:8.4.1.jre8 坐标)来解决此问题,如下所示(对于 spark-submit/spark-shell/pyspark 等):

    bin/spark-shell --packages \
      com.microsoft.azure:spark-mssql-connector_2.12_3.0:1.0.0-alpha,com.microsoft.sqlserver:mssql-jdbc:8.4.1.jre8
    

    或通过 UI 添加两个库

    【讨论】:

    • 我使用 SBT 创建了构建文件并将其包含在库中以及上述步骤中,但收到以下错误消息 - 由于阶段失败而中止作业:阶段 1.0 中的任务 0 失败了 4 次,大多数最近失败:在阶段 1.0 中丢失任务 0.3(TID 4、10.139.64.4、执行程序 0):java.io.InvalidClassException:com.microsoft.sqlserver.jdbc.spark.SQLServerBulkJdbcOptions;本地类不兼容:流classdesc serialVersionUID = -5653142344326218886,本地类serialVersionUID = -2929844964663823362
    • hmmm... 检查您的版本是否与 MS SQL 连接器中的版本匹配
    • 我们能够使用此连接器将数据写入 Azure SQL,但与 JDBC 连接器相比性能……加载 870 万条记录需要 20 分钟……
    • 您可以按照文档中的说明调整批处理参数
    • 是的,我们已经包含了这些参数 - 尝试:df_merge.write \ .format("com.microsoft.sqlserver.jdbc.spark") \ .mode("overwrite") \ .option("url ", url) \ .option("dbtable", table_name) \ .option("user", username) \ .option("password", 密码) \ .option("bulkCopyBatchSize","400000") \ .option( "bulkCopyTableLock","true") \ .option("bulkCopyTimeout","600") \
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-13
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    • 2022-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多