我正在尝试通过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.jar
和tdgssconfig.jar
?
答案 0 :(得分:0)
尝试按照这篇文章解释如何将JDBC驱动程序添加到pyspark。
How to add jdbc drivers to classpath when using PySpark?
以上示例适用于postgres和docker,但答案应适用于您的方案。 注意,您对驱动程序文件是正确的。大多数JDBC驱动程序位于单个文件中,但是Teradata将其分为两部分。我认为一个是实际的驱动程序,另一个(tdgss)中包含安全性内容。 两个文件都必须添加到类路径中才能起作用。
或者,只需在Google上搜索“如何将JDBC驱动程序添加到pyspark”。