apache-spark - 从 Spark 连接到 sql 数据库
问题描述
我正在尝试从 spark 连接到 SQL 数据库,并且我使用了以下命令:
scala> import org.apache.spark.sql.SQLContext
import org.apache.spark.sql.SQLContext
scala> val sqlcontext = new org.apache.spark.sql.SQLContext(sc)
warning: there was one deprecation warning; re-run with -deprecation for details
sqlcontext: org.apache.spark.sql.SQLContext = org.apache.spark.sql.SQLContext@2bf4fa1
scala> val dataframe_mysql = sqlcontext.read.format("jdbc").option("url", "jdbc:sqlserver:192.168.103.64/DRE").option("driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver").option("dbtable", "NCentralAlerts")
.option("user", "sqoop").option("password", "hadoop").load()
java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
at scala.reflect.internal.util.AbstractFileClassLoader.findClass(AbstractFileClassLoader.scala:62)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.apache.spark.sql.execution.datasources.jdbc.DriverRegistry$.register(DriverRegistry.scala:45)
at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions$$anonfun$6.apply(JDBCOptions.scala:79)
at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions$$anonfun$6.apply(JDBCOptions.scala:79)
at scala.Option.foreach(Option.scala:257)
at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions.<init>(JDBCOptions.scala:79)
at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions.<init>(JDBCOptions.scala:35)
at org.apache.spark.sql.execution.datasources.jdbc.JdbcRelationProvider.createRelation(JdbcRelationProvider.scala:34)
at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:340)
at org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:239)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:227)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:164)
... 49 elided
我看到 Spark 正在寻找 SQL 驱动程序。我将该 SQL 驱动程序放在哪个目录中?
解决方案
我从日志中看到您正在尝试使用 spark shell 运行它。假设你手头有罐子。spark-shell
从以下添加开始
spark-shell --jars /path/to/driver.jar
这样,它将被添加到您的类路径中,您将能够使用驱动程序。
希望这可以帮助
推荐阅读
- c++ - “*const char *”类型的值不能分配给“char *”类型的实体
- ansible - 在 Vagrant 中构建完所有虚拟机后,Anisble 会在 playbook 中运行两次
- php - 如何打开已经在内存中的 SQLite3 文件,而无需在 PHP 中接触磁盘?
- android - 简单的导航抽屉
- angular - 隐藏在 Angular 2 版本 6 中不起作用
- amazon-web-services - 创建具有不同权限的 S3 Bucket 文件夹
- vba - 我需要使用 vba 根据分隔符值将单元格值拆分为不同的单元格
- python - 在 Django admin 中自动填充关系
- java - 未触及代码块
- javascript - Javascript 编辑器警告“错误太多”w/maxerr:1 并且没有发现错误