【发布时间】:2021-02-18 12:52:08
【问题描述】:
我正在从 mongodb 集合中提取数据并使用 Spark python 代码将其写入 bigquery 表。
下面是我的代码 sn-p:
df = spark.read\
.format("com.mongodb.spark.sql.DefaultSource")\
.option("uri","mongodb_url")\
.option("database","db_name")\
.option("collection", "collection_name")\
.load()
df.write \
.format("bigquery") \
.mode("append")\
.option("temporaryGcsBucket","gcs_bucket") \
.option("createDisposition","CREATE_IF_NEEDED")\
.save("bq_dataset_name.collection_name")
这将从 mongodb 集合中提取所有数据。但我只想提取满足条件的文档(如 sql 查询中的 where 条件)。
我发现的一种方法是读取数据帧中的整个数据并在该数据帧上使用过滤器,如下所示:
df2 = df.filter(df['date'] < '12-03-2020 10:12:40')
但由于我的源 mongo 集合有 8-10 Gb 的数据,我不能每次都从 mongo 读取整个数据。
如何在使用 spark.read 从 mongo 读取数据时使用过滤?
【问题讨论】:
标签: apache-spark pyspark apache-spark-sql spark-streaming