如何在 aws glue dynamicframe 上创建过滤器以过滤掉一组(文字)值

How to create a filter on an aws glue dynamicframe that filters out set of (literal) values

在 glue 脚本中(运行 在 zeppelin notebook 中转发到 glue 中的开发端点),我从 glue table 创建了一个动态框架,我想过滤字段“名称”不在静态值列表中,即(“a”,“b”,“c”)。

过滤不相等的效果就像这样:

def unknownNameFilter(rec: DynamicRecord): Boolean = { 
   rec.getField("name").exists(_ != "a")
}

我已经尝试了几种方法,例如

!rec.getField("name").exists(_ isin ("a","b","c"))

但它给出了错误(值 isin 不是 Any 的成员),我只能在网络上找到 pyspark 示例和首先将动态帧转换为数据帧的示例(如果可能,我想阻止)。

非常感谢帮助,谢谢。

好的,找到我的答案,我会 post 为任何正在寻找它的人提供它,它已完成

!(knownevents.contains(eventname))

在过滤函数中像这样:

def unknownEventFilter(rec: DynamicRecord): Boolean = { 
  
  val knownevents = List("evt_a","evt_b")    
     
  rec.getField("name") match {
 
    case Some(eventname: String) => !(knownevents.contains(eventname))
      
    case _ => throw new IllegalArgumentException(s"Unable to extract field name")
  }
}

val dfUnknownEvents =  df.filter(unknownEventFilter)