我有以下代码段,用于从Postgresql表中读取数据,我从中提取所有可用数据,即select * from table_name
:
jdbcDF = spark.read \
.format("jdbc") \
.option("url", self.var_dict['jdbc_url']) \
.option("dbtable", "({0}) as subq".format(query)) \
.option("user", self.var_dict['db_user']) \
.option("password", self.var_dict['db_password']) \
.option("driver", self.var_dict['db_driver']) \
.option("numPartitions", 10) \
.option("fetchsize", 10000) \
.load()
其中var_dict是一本字典,其中包含我的变量,例如spark上下文,数据库凭据等。
即使我要提取数百万行,以下代码的结果也始终返回1:
partitions_num = jdbcDF.rdd.getNumPartitions()
有人可以告诉我我在这里做错了什么吗?理想情况下,我应该使用最大的可用资源,而不是仅将数据拉到我的主节点。
partitionColumn,lowerBound,upperBound无法使用,因为我的分区列是时间戳,而不是数字。