我多次读取具有相同选项的数据。有没有办法避免重复常见的 DataFrameReader 选项并以某种方式单独初始化它们以便稍后在每次读取时使用它们?
metrics_df = spark.read.format("jdbc") \
.option("driver", self.driver) \
.option("url", self.url) \
.option("user", self.username) \
.option("password", self.password) \
.load()
定义
dataframereader
的所有选项,即 <class 'pyspark.sql.readwriter.DataFrameReader'>
,然后添加 dbtable 选项以重用数据帧读取器。
Example:
metrics_df_options = spark.read.format("jdbc") \
.option("driver", self.driver) \
.option("url", self.url) \
.option("user", self.username) \
.option("password", self.password)
type(metrics_df_options)
#<class 'pyspark.sql.readwriter.DataFrameReader'>
#configure dbtable and pull data from rdbms table
metrics_df_options.option("dbtable","<table_name>").load().show()
您也可以像往常一样编码,定义常用选项,然后使用 .options() 将它们传递给 DataFrameReader 或 DataFrameWritter。
请记住,选项期望选项作为关键字参数传递,因此您需要解压它们。
将字典传递给spark.read.options的示例
common_options = {
'user': 'my_db_user',
'password': 'my_db_password'
}
metrics_df = spark.read.format("jdbc") \
.option("driver", self.driver) \
.option("url", self.url) \
.options(**common_options) \
.load()