如何使用Pyspark连接Teradata

时间:2019-05-02 23:55:10

标签: java python apache-spark pyspark teradata

我正在尝试通过PySpark连接Teradata服务器。

我的CLI代码如下,

from pyspark.sql import SparkSession
spark=SparkSession.builder
                  .appName("Teradata connect")
                  .getOrCreate()
df = sqlContext.read
               .format("jdbc")
               .options(url="jdbc:teradata://xy/",
                        driver="com.teradata.jdbc.TeraDriver",
                        dbtable="dbname.tablename",
                        user="user1",password="***")
               .load()

哪个出错了,

  

py4j.protocol.Py4JJavaError:调用o159.load时发生错误。   :java.lang.ClassNotFoundException:com.teradata.jdbc.TeraDriver

我想解决这个问题,我需要添加jar terajdbc4.jar和`tdgssconfig.jar。

在Scala中,我们可以使用添加罐子

    sc.addJar("<path>/jar-name.jar")

如果我将其用于PySpark,则出现错误

  

AttributeError:“ SparkContext”对象没有属性“ addJar”。

  

AttributeError:“ SparkSession”对象没有属性“ addJar”

如何添加jar terajdbc4.jartdgssconfig.jar

1 个答案:

答案 0 :(得分:0)

尝试按照这篇文章解释如何将JDBC驱动程序添加到pyspark。

How to add jdbc drivers to classpath when using PySpark?

以上示例适用于postgres和docker,但答案应适用于您的方案。 注意,您对驱动程序文件是正确的。大多数JDBC驱动程序位于单个文件中,但是Teradata将其分为两部分。我认为一个是实际的驱动程序,另一个(tdgss)中包含安全性内容。 两个文件都必须添加到类路径中才能起作用。

或者,只需在Google上搜索“如何将JDBC驱动程序添加到pyspark”。