Pyspark 2.4 Проблема, возникающая при передаче файла свойств в spark представить - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть программа pyspark, которая успешно подключается к базе данных MySQL и читает таблицу.Теперь я пытаюсь передать учетные данные базы данных из файла свойств, а не встраивать их в код, но не могу заставить его работать.

from pyspark.sql import SparkSession
from pyspark.sql.types import * 

#spark-submit –packages mysql:mysql-connector-java:8.0.13 workWithMySQL.py
spark = SparkSession.builder.appName(“MySQL connection”).getOrCreate()

#create spart context from spark session
sc = spark.sparkContext

#read from mysql

#configuration details
hostname=”localhost”
jdbcport=3306
dbname=”TEST”
username=”kanchan@localhost”
password=”password”
mysql_url = “jdbc:mysql://{0}:{1}/{2}?user={3}&password={4}”.format(hostname,jdbcport,dbname,username,password)
mysql_driver = “com.mysql.jdbc.Driver”
query = “(select * from cats) t1_alias”
df4 = spark.read.format(“jdbc”).options(driver=mysql_driver,url=mysql_url, dbtable=query).load()
df4.show()

Теперь я создал файл свойств jdbc.свойства в $SPARK_HOME/conf

spark.mysql.user kanchan@localhost
spark.mysql.password password

И добавить его в вызове spark-submit

spark-submit –packages mysql:mysql-connector-java:8.0.13 --files $SPARK_HOME/conf/jdbc.properties workWithMySQL.py

заменил назначения:

username=sc.getConf.getOption("spark.mysql.user")
password=sc.getConf.getOption("spark.mysql.user")

при запуске.выдает ошибку, говоря, что функция не имеет атрибута как опция get.Я не мог найти соответствующую документацию для него.Кто-нибудь может помочь?

Кроме того, возможно ли зашифровать учетные данные или обеспечить безопасность данных любым другим способом?

1 Ответ

0 голосов
/ 21 декабря 2018

Метод getOption следует заменить на метод get.

username=sc.getConf().get("spark.mysql.user")
...