簡體   English   中英

從本地文件讀取密碼並傳入 pyspark 腳本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM