Spark JDBC读取仅在一个分区中结束

问题描述 投票:1回答:1

我有下面的代码片段,用于从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无法使用,因为我的分区列是时间戳,而不是数字。

apache-spark pyspark pyspark-sql spark-jdbc
1个回答
0
投票

从spark 2.4.0起,分区还支持日期和时间戳列,https://issues.apache.org/jira/browse/SPARK-22814

© www.soinside.com 2019 - 2024. All rights reserved.