pyspark 2.4在spark submit中传递属性文件时遇到问题

jjhzyzn0  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(425)

我有一个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.properties $SPARK_HOME/conf ```
spark.mysql.user kanchan@localhost
spark.mysql.password password

并将其添加到spark submit call中

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选项。我找不到相应的文档。有人能帮忙吗?
此外,是否可以通过任何其他方式加密凭据或确保数据安全?
unguejic

unguejic1#

方法 getOption 应替换为方法 get .

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

相关问题