[英]reading a password from local file and passing in pyspark script
我正在嘗試從文件中讀取密碼並傳遞到 SAP 連接中。 因為我有 50 多個腳本使用相同的密碼,所以如果密碼被更改,我不需要進入每個腳本並更改,而是我可以簡單地更改一個文件。
from pyspark.context import SparkContext
from pyspark.sql import HiveContext
from pyspark.sql.functions import *
from pyspark.sql.types import *
sc = SparkContext()
sqlContext = HiveContext(sc)
sqlContext.setConf("spark.sql.tungsten.enabled", "false")
ZTGLINT011_query = """ (select * from ZTGLINT011) a """
#passwd = sc.textFile("file:///root/Documents/pwd.txt")
passwd=cat /root/Documents/pwd.txt
ZTGLINT011 = sqlContext.read.format("jdbc").options(url="jdbc:sap://myIP:30015",currentschema="SAPABAP1",user="loginName",password=passwd,dbtable=ZTGLINT011_query).load()
ZTGLINT011.write.format("parquet").save("/user/admin/sqoop/base/sap/ZTGLINT011/")
在txt文件中輸入內容:
{ “密碼”:“你的密碼” }
復制粘貼您的代碼,這將起作用:
from pyspark.context import SparkContext
from pyspark.sql import HiveContext
from pyspark.sql.functions import *
from pyspark.sql.types import *
import json
sc = SparkContext()
sqlContext = HiveContext(sc)
sqlContext.setConf("spark.sql.tungsten.enabled", "false")
ZTGLINT011_query = """ (select * from ZTGLINT011) a """
passwfile = open("/root/Documents/pwd.txt", "r")
contents = passwfile.read()
info = json.dumps(contents)
passwd = info['Password']
ZTGLINT011 = sqlContext.read.format("jdbc").options(url="jdbc:sap://myIP:30015",currentschema="SAPABAP1",user="loginName",password=passwd,dbtable=ZTGLINT011_query).load()
ZTGLINT011.write.format("parquet").save("/user/admin/sqoop/base/sap/ZTGLINT011/")
from pyspark.context import SparkContext
from pyspark.sql import HiveContext
from pyspark.sql.functions import *
from pyspark.sql.types import *
sc = SparkContext()
sqlContext = HiveContext(sc)
sqlContext.setConf("spark.sql.tungsten.enabled", "false")
ZTGLINT011_query = """ (select * from ZTGLINT011) a """
passwfile = open("/root/Documents/pwd.txt", "r")
for passwd in passwfile:
ZTGLINT011 = sqlContext.read.format("jdbc").options(url="jdbc:sap://myIP:30015",currentschema="SAPABAP1",user="loginName",password=passwd,dbtable=ZTGLINT011_query).load()
ZTGLINT011.write.format("parquet").save("/user/admin/sqoop/base/sap/ZTGLINT011/")
最好的辦法是將密碼、用戶名、IP、端口等存儲在文件 /root/Documents/pwd.txt 中
============pwd.txt:內容============
{ "IP": "myIP", "PORT": 8080, "Usernme": "user", "Password": "pass" }
===============================================
在你的代碼中:
import json
f= open('/root/Documents/pwd.txt','r')
contents = f.read()
server_details = json.loads(contents)
password = server_details['Password']
username=server_details['Password']
Port =server_details["PORT"]
IP=server_details["IP"]
ZTGLINT011 = sqlContext.read.format("jdbc").options(url="jdbc:sap://"+IP+":"+Port,currentschema="SAPABAP1",user=username,password=password,dbtable=ZTGLINT011_query).load()
您也可以在 txt 文件中添加 currentschema 和 dbtable
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.