尝试通过在列表中传递每个id的值来过滤具有多个id列的Dataframe。
例如:df:
location_user
transactiontime (string)
user_id (bigint)
location_id (bigint)
Address1 (string)
Address2 (string)
user_name (string)
loc_name (string)
在上面的数据框中:user\u id和location\u id都是id列。
目标:根据Dataframe过滤用户id=[4293942940]和位置id=[14681469]。
创建如下单独列表并将其应用于df.filter。
partition_key =['user_id', 'location_id']
filter_cond = ['[42939,42940]', '[1468,1469]']
--->为单分区密钥工作
filter_df=actual_df.filter(~col(partition_key).isin(filter_cond))
尝试使用下面的分区组合键,但不起作用,出现下面的错误。
filter_df=actual_df.filter(~col(partition_key).isInCollection(filter_cond))
错误:覆盖目录时出错。请检查是否传递了正确的参数。异常:调用z:org.apache.spark.sql.functions.col时出错。trace:py4j.py4jexception:method col([class java.util.arraylist])不存在
谢谢你的建议。
1条答案
按热度按时间zpjtge221#
您可以通过压缩以下条件来实现
单个元素的更新