Spark JDBC 读取仅在一个分区中结束
Spark JDBC read ends up in one partition only
我有下面的代码片段,用于从 Postgresql table 中读取数据,我从那里提取所有可用数据,即 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 上下文、数据库信用等
即使我从下面的代码中提取数百万行结果 returns 1 总是:
partitions_num = jdbcDF.rdd.getNumPartitions()
如果我在这里做错了什么,有人可以告诉我吗?理想情况下,我应该使用最大的可用资源,而不是只将数据拉到我的主节点。
partitionColumn、lowerBound、upperBound 不能使用,因为我的分区列是时间戳而不是数字。
从spark 2.4.0开始,分区也支持日期和时间戳列,
https://issues.apache.org/jira/browse/SPARK-22814
我有下面的代码片段,用于从 Postgresql table 中读取数据,我从那里提取所有可用数据,即 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 上下文、数据库信用等
即使我从下面的代码中提取数百万行结果 returns 1 总是:
partitions_num = jdbcDF.rdd.getNumPartitions()
如果我在这里做错了什么,有人可以告诉我吗?理想情况下,我应该使用最大的可用资源,而不是只将数据拉到我的主节点。
partitionColumn、lowerBound、upperBound 不能使用,因为我的分区列是时间戳而不是数字。
从spark 2.4.0开始,分区也支持日期和时间戳列, https://issues.apache.org/jira/browse/SPARK-22814