Scala中的序列数组

Gar*_*aso 1 scala dataframe spark-dataframe

我试图在数据框中逐列读取不同的值并将它们存储在序列数组中

def getColumnDistinctValues(df: DataFrame, colNames:String): Unit = {
  val cols: Array[String] = colNames.split(',')
  cols.foreach(println) // print column names
  var colDistValues: Array[Seq[Any]] = null
  for (i <- 0 until cols.length) {
    colDistValues(i) = df.select(cols(i)).distinct.map(x => x.get(0)).collect   // read distinct values from each column
}
Run Code Online (Sandbox Code Playgroud)

对colDistValues(i)的赋值不起作用并且总是导致空指针异常,为每个列分配不同值的正确语法是什么?

问候

Yuv*_*kov 5

你正试图访问空指针(你自己指定)的第i个索引,当然你会得到一个NullPointerException.您不需要Array[T]事先初始化,让返回的集合为您执行此操作:

val colDistValues: Array[Array[Any]] = 
  cols.map(c => df.select(c).distinct.map(x => x.get(0)).collect)
Run Code Online (Sandbox Code Playgroud)