数据框爆炸侧视图并与Arrray进行比较

时间:2018-11-26 23:31:01

标签: scala apache-spark

我有一个名为X的spark数据框。X是一个字符串列,其中包含用','分隔的值的列表。另外,我有一个值数组,可以称其为Y。我试图做的是过滤我的数据框,其中用','分割后的X中的值位于Y中。我的最终数据框应包含其中不包含任何值的行X匹配Y。

以下是我正在尝试执行的代码,但是对于我的数据集而言,它非常慢。

 val arrayMatches = udf { (a: mutable.WrappedArray[String],
                          b: mutable.WrappedArray[String]) =>
  a.intersect(b).nonEmpty
}

def asLitArray[T](xs: Seq[T]) = array(xs map lit: _*)

val col1 = col("X") // Column containing string values separated by "," ex: "abc,def,ghi,jkl"

// Y is array of string values like "abc, def, ghi". Size of Y is around 200k
val condition = !col1.isNull || !arrayMatches(split(col1, ","), asLitArray(Y))

val resultDF = myDataDF.filter(condition)
resultDF.count() // --> This step take ages. 

有更好的方法吗?

谢谢

0 个答案:

没有答案