Pyspark 2.4 在 spark 提交中传递属性文件时面临的问题
Pyspark 2.4 Issue faced while passing properties file in spark submit
我有一个 pyspark 程序可以成功连接到 MySQL 数据库并读取 table。现在,我试图从属性文件传递数据库凭据,而不是将它们嵌入代码中,但无法使其正常工作。
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()
现在,我在 $SPARK_HOME/conf
创建了属性文件 jdbc.properties
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 选项。我找不到适合它的文档。有人可以帮忙吗?
此外,是否可以通过任何其他方式对凭据进行加密或确保数据安全?
方法 getOption
应替换为方法 get
。
username=sc.getConf().get("spark.mysql.user")
我有一个 pyspark 程序可以成功连接到 MySQL 数据库并读取 table。现在,我试图从属性文件传递数据库凭据,而不是将它们嵌入代码中,但无法使其正常工作。
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()
现在,我在 $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 选项。我找不到适合它的文档。有人可以帮忙吗?
此外,是否可以通过任何其他方式对凭据进行加密或确保数据安全?
方法 getOption
应替换为方法 get
。
username=sc.getConf().get("spark.mysql.user")