我有以下代码,将用于将hadoop环境与Teradata连接起来。
sc = spark.sparkContext
from pyspark.sql import SQLContext
sqlContext = SQLContext(sc)
df = sqlContext.read.format("jdbc").options(url="jdbc:teradata://teradata-dns-sysa.fg.rbc.com",driver="com.teradata.jdbc.TeraDriver",dbtable="table",user="userid",password="xxxxxxxx").load()
现在,不同用户的用户ID和密码是不同的。因此,寻找一种解决方案,其中凭据可以存储在安全位置的文件中,并且代码仅引用文件中的数据(userid和密码(
在这里,您可以使用属性文件,您可以在其中将所需的用户标识和密码存储在文件中。您可以在运行 spark-submit 命令时使用参数参数 --properties-file file_name in 命令引用属性文件。下面是相同的示例代码。
from pyspark.sql import SparkSession
spark = SparkSession.builder
.appName("Teradata Connect")
.getOrCreate()
sc = spark.sparkContext
DB_DRIVER = sc._conf.get('spark.DB_DRIVER')
JDBC_URL = sc._conf.get('spark.JDBC_URL')
DB_USER = sc._conf.get('spark.DB_USER')
DB_PASS = sc._conf.get('spark.DB_PASS')
jdbcDF = (spark.read.format("jdbc").option("driver", DB_DRIVER)
.option("url", JDBC_URL)
.option("dbtable", "sql_query")
.option("user", DB_USER)
.option("password", DB_PASS)
.load())
jdbcDF.show(10)
示例属性文件
火花。DB_DRIVER com.teradata.jdbc.TeraDriver
火花。JDBC_URL jdbc:teradata://teradata-dns-sysa.fg.rbc.com
火花。DB_USER用户标识
火花。DB_PASS密码
火花提交命令
spark2-submit --master yarn
--deploy-mode cluster
--properties-file $CONF_FILE
pyspark_script.py