Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python SPARK如何根据不同日期范围的键有效地从映射/查找表中获取值?_Python_Apache Spark_Pyspark_Apache Spark Sql_Bigdata - Fatal编程技术网

Python SPARK如何根据不同日期范围的键有效地从映射/查找表中获取值?

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["

我正在编写一个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["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亿条记录是输入数据框的大小吗?什么映射表的大小以及可以存在多少映射表?