Spark SQL 创建一个数组,其中数组值位于一列中



我有一列整数数组类型:

 case class Testing(name: String, age: Int, salary: Double, array: Array[Int])
  val x = sc.parallelize(Array(
     Testing(null, 21, 905.33, Array(1,2,3)),
     Testing("Noelia", 26, 1130.60, Array(3,2,1)),
     Testing("Pilar", 52,  1890.85, Array(3,3,3)),
     Testing("Roberto", 31, 1450.14, Array(1,0,0))
   ))
  // Convert RDD to a DataFrame 
  val df = sqlContext.createDataFrame(x) 
  // For SQL usage we need to register the table
   df.registerTempTable("df")

我想创建一个数组,其元素是"数组"列的值。如何在Spark SQL中执行此操作?

 sqlContext.sql("SELECT [array] from df").show
 [ [1,2,3], [3,2,1], [3,3,3], [1,0,0]]

假设您有一个名为 dfDataFrame,并且Array()值位于名为array的列中,这应该可以解决问题。

df.select($"array").rdd.map{
  row =>  row.getList[Int](0).toArray
}.collect()

如果你想通过sqlContext.sql来做到这一点:

sqlContext.sql("SELECT array FROM df").rdd.map{
  row =>  row.getList[Int](0).toArray
}.collect()

相关内容

  • 没有找到相关文章

最新更新