Mpi*_*ris 12 postgresql apache-spark pyspark
我正在尝试使用pyspark连接到数据库,我使用以下代码:
sqlctx = SQLContext(sc)
df = sqlctx.load(
url = "jdbc:postgresql://[hostname]/[database]",
dbtable = "(SELECT * FROM talent LIMIT 1000) as blah",
password = "MichaelJordan",
user = "ScottyPippen",
source = "jdbc",
driver = "org.postgresql.Driver"
)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
知道为什么会这样吗?
编辑:我试图在我的计算机本地运行代码.
mdh*_*mdh 12
以下是在localhost上使用postgres为我工作的:
从https://jdbc.postgresql.org/download.html下载PostgreSQL JDBC驱动程序.
对于pysparkshell,您使用SPARK_CLASSPATH环境变量:
$ export SPARK_CLASSPATH=/path/to/downloaded/jar
$ pyspark
Run Code Online (Sandbox Code Playgroud)
要通过spark-submit使用--driver-class-path标志提交脚本:
$ spark-submit --driver-class-path /path/to/downloaded/jar script.py
Run Code Online (Sandbox Code Playgroud)
在python脚本中加载表DataFrame如下:
from pyspark.sql import DataFrameReader
url = 'postgresql://localhost:5432/dbname'
properties = {'user': 'username', 'password': 'password'}
df = DataFrameReader(sqlContext).jdbc(
url='jdbc:%s' % url, table='tablename', properties=properties
)
Run Code Online (Sandbox Code Playgroud)
或者:
df = sqlContext.read.format('jdbc').\
options(url='jdbc:%s' % url, dbtable='tablename').\
load()
Run Code Online (Sandbox Code Playgroud)
请注意,通过提交脚本时spark-submit,您需要定义sqlContext.
要使用pyspark和jupyter笔记本笔记本:首先使用以下命令打开pyspark
pyspark --driver-class-path /spark_drivers/postgresql-42.2.12.jar --jars /spark_drivers/postgresql-42.2.12.jar
Run Code Online (Sandbox Code Playgroud)
然后在jupyter笔记本中
import os
jardrv = "~/spark_drivers/postgresql-42.2.12.jar"
from pyspark.sql import SparkSession
spark = SparkSession.builder.config('spark.driver.extraClassPath', jardrv).getOrCreate()
url = 'jdbc:postgresql://127.0.0.1/dbname'
properties = {'user': 'usr', 'password': 'pswd'}
df = spark.read.jdbc(url=url, table='tablename', properties=properties)
Run Code Online (Sandbox Code Playgroud)
小智 6
从https://jdbc.postgresql.org/download.html下载PostgreSQL JDBC驱动程序
然后用您的替换数据库配置值。
from pyspark.sql import SparkSession
spark = SparkSession \
.builder \
.appName("Python Spark SQL basic example") \
.config("spark.jars", "/path_to_postgresDriver/postgresql-42.2.5.jar") \
.getOrCreate()
df = spark.read \
.format("jdbc") \
.option("url", "jdbc:postgresql://localhost:5432/databasename") \
.option("dbtable", "tablename") \
.option("user", "username") \
.option("password", "password") \
.option("driver", "org.postgresql.Driver") \
.load()
df.printSchema()
Run Code Online (Sandbox Code Playgroud)
更多信息:https : //spark.apache.org/docs/latest/sql-data-sources-jdbc.html
在所有节点上都必须复制postgresql-42.1.4.jar ...对于我来说,我确实在路径/opt/spark-2.2.0-bin-hadoop2.7/jars中复制了
另外,我在〜/ .bashrc中设置类路径(export SPARK_CLASSPATH =“ / opt / spark-2.2.0-bin-hadoop2.7 / jars”)
并在pyspark控制台和jupyter中正常工作
您通常需要:
如果您详细说明如何启动 pyspark,我们可能会为您提供更多详细信息。
一些线索/想法:
无法在 pyspark shell 中使用 jdbc 连接到 postgres
| 归档时间: |
|
| 查看次数: |
24320 次 |
| 最近记录: |