我试图在数据框中逐列读取不同的值并将它们存储在序列数组
中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)的赋值不起作用并且总是导致空指针异常,为每个列分配不同值的正确语法是什么?
此致
答案 0 :(得分:5)
您正在尝试访问空指针(您自己指定)的第i个索引,当然您将获得$ ./checked_atof.exe
Enter a floating point number:
23.42
Ok, result: 23.42
$ ./checked_atof.exe
Enter a floating point number:
3.14159e-4
Ok, result: 0.000314159
$ ./checked_atof.exe
Enter a floating point number:
x9
Sorry, not a valid floating point number!
。您不需要事先初始化NullPointerException
,让返回的集合为您执行此操作:
Array[T]
答案 1 :(得分:2)
您正在将colDistValues
初始化为null。
替换
var colDistValues: Array[Seq[Any]] = null
带
var colDistValues: Array[Seq[Any]] = Array.ofDim[Seq[Any]](cols.length)