我正在尝试在数据框架中读取不同的值列,并将它们存储在序列
的数组中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
}
coldistValues(i)的分配不起作用,并且始终导致null指针异常,分配每列的不同值的正确语法是什么?
问候
您正在尝试访问空指针的ITH索引(您分配了自己),当然您会得到NullPointerException
。您无需事先初始化Array[T]
,让返回的集合为您完成:
val colDistValues: Array[Array[Any]] =
cols.map(c => df.select(c).distinct.map(x => x.get(0)).collect)
您将colDistValues
初始化为null。
替换
var colDistValues: Array[Seq[Any]] = null
var colDistValues: Array[Seq[Any]] = Array.ofDim[Seq[Any]](cols.length)