0

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

过滤不等式就可以了,如下所示:

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

我尝试了几件事,例如

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

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

非常感谢帮助,谢谢。

4

1 回答 1

0

好的,找到我的答案,我会把它发布给其他寻找这个的人,它已经完成了

!(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) 
于 2021-02-15T15:51:38.603 回答