У меня работает существующий кластер EMR, и я хочу создать DF из базы данных Postgresql.
Для этого, похоже, вам нужно изменить spark-defaults.conf с обновленным spark.driver.extraClassPath
и указать на соответствующий JAR-файл PostgreSQL, который уже был загружен на главные и подчиненные узлы, или Вы можете добавить их в качестве аргументов к заданию spark-submit.
Поскольку я хочу использовать существующую записную книжку Jupyter для обработки данных, и не хочу перезапускать кластер, какой самый эффективный способ решить эту проблему?
Я попробовал следующее:
Создать новый каталог (/ usr / lib / postgresql / на главном и подчиненном устройствах и скопировать в него jar PostgreSQL. (Postgresql-9.41207.jre6.jar)
Отредактировано spark-default.conf для включения подстановочного знака
spark.driver.extraClassPath :/usr/lib/postgresql/*:/usr/lib/hadoop/hadoop-aws.jar:/usr/share/aws/aws-java-sdk/*:/usr/share/aws/emr/emrfs/conf:/$
Попытка создать фрейм данных в ячейке Jupyter, используя следующий код:
SQL_CONN = "jdbc:postgresql://some_postgresql_db:5432/dbname?user=user&password=password"
spark.read.jdbc(SQL_CONN, table="someTable", properties={"driver":'com.postgresql.jdbc.Driver'})
Я получаю ошибку Java, как показано ниже:
Py4JJavaError: An error occurred while calling o396.jdbc.
: java.lang.ClassNotFoundException: com.postgresql.jdbc.Driver
Помощь оценена.