无法使用pyspark shell中的jdbc连接到postgres
我在本地窗口上使用独立群集,并尝试使用以下代码从我们的服务器之一加载数据 -
from pyspark.sql import SQLContext
sqlContext = SQLContext(sc)
df = sqlContext.load(source="jdbc", url="jdbc:postgresql://host/dbname", dbtable="schema.tablename")
我已将SPARK_CLASSPATH设置为 -
os.environ['SPARK_CLASSPATH'] = "C:UsersACERNEW3DesktopSparkspark-1.3.0-bin-hadoop2.4postgresql-9.2-1002.jdbc3.jar"
在执行sqlContext.load时,它会抛出错误提到“找不到适合jdbc:postgresql的驱动程序”。 我试图搜索网页,但无法找到解决方案。
可能会有帮助。
在我的环境中,SPARK_CLASSPATH包含postgresql连接器的路径
from pyspark import SparkContext, SparkConf
from pyspark.sql import DataFrameReader, SQLContext
import os
sparkClassPath = os.getenv('SPARK_CLASSPATH', '/path/to/connector/postgresql-42.1.4.jar')
# Populate configuration
conf = SparkConf()
conf.setAppName('application')
conf.set('spark.jars', 'file:%s' % sparkClassPath)
conf.set('spark.executor.extraClassPath', sparkClassPath)
conf.set('spark.driver.extraClassPath', sparkClassPath)
# Uncomment line below and modify ip address if you need to use cluster on different IP address
#conf.set('spark.master', 'spark://127.0.0.1:7077')
sc = SparkContext(conf=conf)
sqlContext = SQLContext(sc)
url = 'postgresql://127.0.0.1:5432/postgresql'
properties = {'user':'username', 'password':'password'}
df = DataFrameReader(sqlContext).jdbc(url='jdbc:%s' % url, table='tablename', properties=properties)
df.printSchema()
df.show()
这段代码允许在需要的地方使用pyspark。 例如,我在Django项目中使用过它。
我和mysql有同样的问题,并且始终无法使用SPARK_CLASSPATH方法工作。 但是我确实已经使用额外的命令行参数来工作,请参阅此问题的答案
为了避免点击进入工作状态,您需要执行以下操作:
pyspark --conf spark.executor.extraClassPath=<jdbc.jar> --driver-class-path <jdbc.jar> --jars <jdbc.jar> --master <master-URL>
链接地址: http://www.djcxy.com/p/25617.html
上一篇: Not able to connect to postgres using jdbc in pyspark shell
下一篇: Factory pattern: Validating input when creating a bean (Guice/Guava)