【问题标题】:Connect to SQL Data Warehouse from HDInsight OnDemand从 HDInsight OnDemand 连接到 SQL 数据仓库
【发布时间】:2018-06-12 08:25:04
【问题描述】:

我正在尝试从 spark on demand HDInsight 群集读取/写入数据到 Azure SQL 数据仓库。

我可以通过using a script action to install the jdbc driver 从普通 HDInsight spark 集群执行此操作,但我认为无法在按需集群上运行脚本操作。

我试过了

  • 将文件从 %user%.m2\repository\com\microsoft\sqlserver\mssql-jdbc\6.2.2.jre8 复制到构建 spark 代码所在位置旁边名为 jars 的文件夹中的 blob 存储。
  • 在构建的jar文件中包含驱动依赖

这两个都导致了 java.lang.NoClassDefFoundError

我对 scala/maven/JVM/etc 不太熟悉,所以不确定在这个 SO 问题中还有什么可以尝试或包含的内容。

我尝试运行的 Scala 代码是

val sqlContext = SparkSession.builder().appName("GenerateEventsSql").getOrCreate()

val jdbcSqlConnStr = "jdbc:sqlserver://someserver.database.windows.net:1433;databaseName=myDW;user=admin;password=XXXX;"

val tableName = "dbo.SomeTable"

val allTableData = sqlContext.read.format("jdbc")
                    .options(Map(
                      "driver" -> "com.microsoft.sqlserver.jdbc.SQLServerDriver",
                      "url" -> jdbcSqlConnStr, "dbtable" -> tableName)
                    )
  .load()

【问题讨论】:

  • 究竟是哪个类找不到?

标签: scala azure-hdinsight azure-data-factory mssql-jdbc azure-sqldw


【解决方案1】:

HDinsight spark 作业的类路径无法访问 Blob 存储文件夹上的 Jars。您需要将 jar 文件复制到本地主机,例如 /tmp/jars/xyz.jar 并在 Spark-submit 命令中提及相同的内容。

例如

nohup spark-submit --jars /tmp/jars/xyz.jar

【讨论】:

  • 感谢您的回答,我无法访问我正在使用的 azure 帐户,因此无法尝试。我最初是在寻找一种使用 HDInsight OnDemand 服务执行此操作的方法,但我不确定在这样的设置中是否可以运行上面的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-31
相关资源
最近更新 更多