Apache spark 如何将Spark连接到齐柏林飞艇中的JDBC驱动程序?

Apache spark 如何将Spark连接到齐柏林飞艇中的JDBC驱动程序?,apache-spark,pyspark,amazon-emr,apache-zeppelin,Apache Spark,Pyspark,Amazon Emr,Apache Zeppelin,我正在尝试使用齐柏林飞艇笔记本中的Spark将数据从SQL server拉入配置单元表 我正在尝试运行以下代码: %pyspark from pyspark import SparkContext from pyspark.sql import SparkSession from pyspark.sql.dataframe import DataFrame from pyspark.sql.functions import * spark = SparkSession.builder \ .a

我正在尝试使用齐柏林飞艇笔记本中的Spark将数据从SQL server拉入配置单元表

我正在尝试运行以下代码:

%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
下有一个驱动程序。你能解释一下我如何让Spark知道这个司机在哪里吗?我通过shell和解释器编辑器尝试了许多不同的方法

谢谢

编辑

我还应该注意,我通过齐柏林飞艇的外壳(%sh)使用


您可以通过解释器设置中的Web UI添加它,如下所示:

  • 单击菜单中的“解释器”

  • 单击Spark解释器中的“编辑”按钮

  • 在artifact字段中添加jar的路径

  • 然后保存并重新启动解释器


以下是我如何解决这个问题的:

  • scp
    driver jar安装到集群驱动程序节点上

  • 转到齐柏林飞艇解释器并滚动至Spark部分,然后单击编辑

  • 将jar的完整路径写在artifacts下,例如
    /home/Hadoop/mssqljdbc.jar
    ,而不写其他内容

  • 单击保存


  • 那你应该表现得很好

    与Tomas类似,您可以在解释器中使用maven添加驱动程序(或任何库):

    • 单击菜单中的“解释器”
    • 单击Spark解释器中的“编辑”按钮
    • 在artifact字段中添加jar的路径
    • 添加groupId:artifactId:version
    例如,在您的例子中,您可以在工件字段中使用
    com.microsoft.sqlserver:mssqljdbc:jar:8.4.1.jre8


    重新启动解释器时,解释器将为您下载并添加依赖项。

    尝试conf/zeppelin-env.sh export SPARK\u SUBMIT\u OPTIONS=“--jar/jdbc/jar/file.jar”中的SPARK\u SUBMIT\u OPTIONS环境变量--jars/jdbc/jar/file.jar”。我试着通过齐柏林飞艇(%sh)运行它,但它不起作用。我认为这更多地与驾驶员等级的路径有关。对此有什么答案吗?在完成所有指定的操作后,我仍然会遇到“无合适的驱动程序”错误。请参阅我刚刚发布的答案。由于某种原因,当我执行此操作时,错误变为NullPointerException。
    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