#python #python-3.x
Вопрос:
Мое первое досье «sk_read_write.py» заключается в следующем:
from spark_conn import *
from Table_structure import *
class read_write1:
def sk_read_write1(self,schema,spark):
df3 = spark.read.option("multiline", "true").option("mode", "PERMISSIVE").schema(schema).json(
"C:\Users\komu0\Desktop\Read\*.json")
print(Spark_connect_1.connection())
df3.write.format('jdbc').options( url= Spark_connect_1.connection str(connection._port),
driver='com.mysql.cj.jdbc.Driver',
dbtable='sparktable',
user=connection._username,
password=Spark_connect_1.connection._pass).
mode('append').save()
Мой другой файл-это spark_conn.py:
from pyspark.sql.types import StructType,StructField, StringType, IntegerType,BooleanType,DoubleType
from aws_config import *
from Table_structure import*
class Spark_connect_1:
dict1 = get_secret()
def connection(self):
dict1 = get_secret()
_username = dict1['username']
_pass = dict1['password']
_host = dict1['host']
_port = dict1['port']
_dbname = dict1['dbname']
spark = SparkSession.builder
.master("local[1]")
.appName("JSON_MYSQL")
.getOrCreate()
return spark
Я хочу использовать переменную в «_port» в файле sk_read_write.
Я попытался импортировать spark_conn в файл sk_read_write и использовать
«Spark_connect_1.соединение._port» (чтобы получить имя порта), но не работает, пожалуйста, подскажите, как действовать
Ответ №1:
Вы можете получить доступ к имени порта, используя переменную класса для _port
Пример
base_file.py
class ABC:
_port = "Some value"
def sample(self):
ABC._port = "another value"
print("Value of port is {}".format(ABC._port))
test_file.py
from base_file import ABC
#before changing value:
before = ABC()
before.sample()