Pyspark - 如何单独初始化常见的 DataFrameReader 选项?

问题描述 投票:0回答:2

我多次读取具有相同选项的数据。有没有办法避免重复常见的 DataFrameReader 选项并以某种方式单独初始化它们以便稍后在每次读取时使用它们?

    metrics_df = spark.read.format("jdbc") \
        .option("driver", self.driver) \
        .option("url", self.url) \
        .option("user", self.username) \
        .option("password", self.password) \
        .load()
python python-3.x dataframe apache-spark pyspark
2个回答
4
投票

定义

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()

0
投票

您也可以像往常一样编码,定义常用选项,然后使用 .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()
© www.soinside.com 2019 - 2024. All rights reserved.