gpt4 book ai didi

java - 使用 Spark SQL Row 在 Java 中访问多维 WrappedArray 元素

转载 作者:行者123 更新时间:2023-11-30 07:58:21 24 4
gpt4 key购买 nike

我有以下架构:

geometry: struct (nullable = true)
-- coordinates: array (nullable = true)
-- element: array (containsNull = true)
-- element: array (containsNull = true)
-- element: double (containsNull = true)

在 Java 中,如何使用 Spark SQL 行访问 double 元素?

我似乎能得到的最远的是:row.getStruct(0).getList(0)。

谢谢!

最佳答案

在 Scala 中这是可行的,我把它留给你把它翻译成 java:

import org.apache.spark.sql.{Row, SQLContext}
import org.apache.spark.{SparkConf, SparkContext}
import scala.collection.mutable.WrappedArray


object Demo {

case class MyStruct(coordinates:Array[Array[Array[Double]]])
case class MyRow(struct:MyStruct)

def main(args: Array[String]): Unit = {

val sc = new SparkContext(new SparkConf().setAppName("Demo").setMaster("local[*]"))
val sqlContext = new SQLContext(sc)
import sqlContext.implicits._

val data = MyRow(MyStruct(Array(Array(Array(1.0)))))
val df= sc.parallelize(Seq(data)).toDF()

// get first entry (row)
val row = df.collect()(0)

val arr = row.getAs[Row](0).getAs[WrappedArray[WrappedArray[WrappedArray[Double]]]](0)

//access an element
val res = arr(0)(0)(0)

println(res) // 1.0

}
}

关于java - 使用 Spark SQL Row 在 Java 中访问多维 WrappedArray 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40534661/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com