【发布时间】:2020-11-03 18:01:06
【问题描述】:
请仔细阅读这不是this的重复。
我正在尝试通过 AWS 上的 EMR 访问 RDS 数据库。我在 Zeppelin 上做到了这一点:
from pyspark.sql import SparkSession
spark = SparkSession \
.builder \
.appName("Python Spark SQL basic example") \
.config("spark.jars", "/home/hadoop/postgresql-42.2.18.jar") \
.getOrCreate()
df = spark.read \
.format("jdbc") \
.option("url", "jdbc:postgresql://host:5432/base") \
.option("dbtable", "tab") \
.option("user", "xx") \
.option("password", "xx") \
.option("driver", "org.postgresql.Driver") \
.load()
df.printSchema()
当我执行时,我得到了这个错误:
java.lang.ClassNotFoundException: org.postgresql.Driver
所以我找到了this,它运行良好,因为我可以看到我的表的架构(我在解释器配置中添加了 spark.driver.extraClassPath 变量):
root
|-- domaine: string (nullable = true)
|-- traitement: string (nullable = true)
|-- parquet: string (nullable = true)
|-- status: string (nullable = true)
|-- date: date (nullable = true)
但是,当我尝试使用 df.show() 查看表格的内容时,它会返回与之前相同的错误:
Py4JJavaError: An error occurred while calling o118.showString.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 0.0 failed 4 times, most recent failure: Lost task 0.3 in stage 0.0 (TID 3, host, executor 1): java.lang.ClassNotFoundException: org.postgresql.Driver
at org.apache.spark.repl.ExecutorClassLoader.findClass(ExecutorClassLoader.scala:124)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
我不明白为什么我能看到架构但看不到内容。
有什么帮助吗?谢谢。
【问题讨论】:
标签: postgresql jdbc pyspark amazon-rds amazon-emr