Python SPARK如何根据不同日期范围的键有效地从映射/查找表中获取值?
我正在编写一个spark代码,并通过从两个映射表map1、map2获取数据来创建一个新列。要求是map1应在2020年12月10日之前适用,map2应在2020年12月10日之后适用于所有人 输入 map1 map2 输出 我的代码是这样的Python SPARK如何根据不同日期范围的键有效地从映射/查找表中获取值?,python,apache-spark,pyspark,apache-spark-sql,bigdata,Python,Apache Spark,Pyspark,Apache Spark Sql,Bigdata,我正在编写一个spark代码,并通过从两个映射表map1、map2获取数据来创建一个新列。要求是map1应在2020年12月10日之前适用,map2应在2020年12月10日之后适用于所有人 输入 map1 map2 输出 我的代码是这样的 df = input df = df.join(map1, df["city"] == map1["city1"], "inner") df = df.join(map2, df["
df = input
df = df.join(map1, df["city"] == map1["city1"], "inner")
df = df.join(map2, df["city"] == map1["city2"], "inner")
df = df.withColumn("city_desc", when(col("date") < "2020-12-10", col("desc1")).when(col("date") < "2020-12-10", col("desc2"))
df=输入
df=df.join(map1,df[“城市”]==map1[“城市1”],“内部”)
df=df.join(地图2,df[“城市”]==map1[“城市2”],“内部”)
df=带列的df(“城市描述”,当(列(“日期”)<“2020-12-10”,列(“描述1”)。当(列(“日期”)<“2020-12-10”,列(“描述2”))
我将获得所需的输出,但此映射会不断更新,每当新的工作表出现在图片中时,都需要添加一个when条件。是否有任何方法可以有效地处理此问题,因为我有5亿个数据集,并且每个记录都会不断经历每个when条件。5亿条记录是输入数据框的大小吗?什么映射表的大小以及可以存在多少映射表?