Spark - 删除两个数组类型列之间相交的元素

4
我有一个类似这样的数据框:
+---------+--------------------+----------------------------+
|     Name|                rem1|        quota               |
+---------+--------------------+----------------------------+
|Customer_3|[258, 259, 260, 2...|[1, 2, 3, 4, 5, 6, 7,..500]|
|Customer_4|[18, 19, 20, 27, ...|[1, 2, 3, 4, 5, 6, 7,..500]|
|Customer_5|[16, 17, 51, 52, ...|[1, 2, 3, 4, 5, 6, 7,..500]|
|Customer_6|[6, 7, 8, 9, 10, ...|[1, 2, 3, 4, 5, 6, 7,..500]|
|Customer_7|[0, 30, 31, 32, 3...|[1, 2, 3, 4, 5, 6, 7,..500]|

我希望将rem1中的列表值从配额中删除,并创建一个新的列。我已经尝试过。
val dfleft = dfpci_remove2.withColumn("left",$"quota".filter($"rem1"))

<console>:123: error: value filter is not a member of org.apache.spark.sql.ColumnName

请提供建议。

1个回答

2
你可以在列中使用过滤器,以这种方式编写udf如下:
  val filterList = udf((a: Seq[Int], b: Seq[Int]) => a diff b)

  df.withColumn("left", filterList($"rem1", $"quota") )

这应该会给你预期的结果。

希望能对你有所帮助!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接