scala/spark:布尔掩码的数字行

xmq68pz9  于 2021-05-24  发布在  Spark
关注(0)|答案(1)|浏览(535)

我试图获得 boolean 类型所属的数字数组中的值 Row . 此掩码由给定的阈值生成。我找到这个面具的最短路径如下图所示。此外,我将把这个掩码应用于字符串序列,只保留那些与 True 旗帜。
我做这个面具的方式是不是最佳?

khbbv19g

khbbv19g1#

有两种方法可以实现这一点,至少可以避免中间转换为字符串。假设 df 是Dataframe:
方法1:

val numCols = 4
val threshold = 10000
val arr1 = Array.ofDim[Int](numCols)
df.map {
    r =>(0 until numCols).map(i => r.getInt(i))
}.collect()(0).copyToArray(arr1).map(_ > threshold)

方法2:

val arr2 = df.collect()(0).getValuesMap[Int](df.columns)
  .values.toArray.map(_ > threshold)

相关问题