apache-spark - Spark JDBC 读取仅在一个分区中结束
问题描述
我有以下代码片段,用于从我从中提取所有可用数据的 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 context 、 database creds 等。
即使我拉动数百万行,下面代码的结果也总是返回 1:
partitions_num = jdbcDF.rdd.getNumPartitions()
如果我在这里做错了什么,有人可以建议吗?理想情况下,我应该使用最大的可用资源,而不是仅将数据拉到我的主节点。
partitionColumn、lowerBound、upperBound 不能用作我的分区列是时间戳而不是数字。
解决方案
从 spark 2.4.0 开始,日期和时间戳列也支持分区, https://issues.apache.org/jira/browse/SPARK-22814
推荐阅读
- flutter - Flutter:使用本地化代理和支持的Locales 时,应用程序在设备上冻结
- google-cloud-dataflow - 如何尽快限制 Apache Beam 中的 PCollection?
- python - 如何从 PostgreSQL 中不一一查询?
- flutter - Flutter构建失败错误..androidmanifest没有应用程序标签
- java - 当它们作为 lambdas 或方法引用传递时,如何实现可移除的侦听器?
- dataframe - 在最大列值上查询火花数据框
- python - 如何修改任意 scipy.stats 分布以截断它们?
- ios - iOS SMS 和 Call Spam Reporting 扩展报告错误的号码
- android-studio - 我在我的 Android Studio 应用程序中添加了一个带有日/夜模式主题的选项菜单,但单击日间模式会关闭应用程序
- python - python:迭代列表或异步生成器