Scala中的序列数组

时间:2016-11-28 14:57:54

标签: 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
}

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

此致

2 个答案:

答案 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)