我正在尝试使用Zeppelin笔记本中的Spark将数据从SQL服务器拉入Hive表。
我正在尝试运行以下代码:
%pyspark
from pyspark import SparkContext
from pyspark.sql import SparkSession
from pyspark.sql.dataframe import DataFrame
from pyspark.sql.functions import *
spark = SparkSession.builder \
.appName('sample') \
.getOrCreate()
#set url, table, etc.
df = spark.read.format('jdbc') \
.option('url', url) \
.option('driver', 'com.microsoft.sqlserver.jdbc.SQLServerDriver') \
.option('dbtable', table) \
.option('user', user) \
.option('password', password) \
.load()
然而,我总是得到一个异常:
...
Py4JJavaError: An error occurred while calling o81.load.
: java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
...
我一整天都在试图弄清楚这一点,我认为我试图设置驱动程序的方式存在问题。我在实例上的/tmp/sqljdbc42.jar
下有一个驱动程序。你能解释一下我怎么才能让斯帕克知道这个司机在哪里吗?我尝试了许多不同的方法,包括通过shell和解释器编辑器。
谢谢!
编辑
我还应该注意到,我使用以下命令通过Zeppelin的shell (%sh)将jar加载到我的实例中
curl -o /tmp/sqljdbc42.jar http://central.maven.org/maven2/com/microsoft/sqlserver/mssql-jdbc/6.4.0.jre8/mssql-jdbc-6.4.0.jre8.jar
pyspark --driver-class-path /tmp/sqljdbc42.jar --jars /tmp/sqljdbc42.jar
发布于 2019-06-30 21:43:18
下面是我如何解决这个问题的:
将
scp
驱动程序jar放到集群驱动程序节点/home/Hadoop/mssql-jdbc.jar
,而不是其他任何内容。那你应该做得很好!
发布于 2018-08-28 06:41:26
您可以通过Web UI在解释器设置中添加它,如下所示:
发布于 2020-12-08 11:44:38
与Tomas类似,您可以在解释器中使用maven添加驱动程序(或任何库):
Click for >在菜单中单击解释器,然后在工件字段中的Spark interpreter
jar
例如,在您的例子中,您可以在工件字段中使用com.microsoft.sqlserver:mssql-jdbc:jar:8.4.1.jre8
。
当您重新启动解释器时,它将为您下载并添加依赖项。
https://stackoverflow.com/questions/52046004
复制相似问题