Scala spark shell中的行与列表

Scala spark shell中的行与列表,scala,apache-spark,spark-shell,Scala,Apache Spark,Spark Shell,Spark Row和Scala List的区别是什么, 两者都提供了通过索引访问项目的方法 什么时候用哪个 我在第行中看到的唯一区别是它有一些模式 scala> val a=Row(1,"hi",2,"hello") a: org.apache.spark.sql.Row = [1,hi,2,hello] scala> a(0) res61: Any = 1 scala> a(2) res62: Any = 2 scala> a(3) res63: Any = he

Spark Row和Scala List的区别是什么, 两者都提供了通过索引访问项目的方法 什么时候用哪个

我在第行中看到的唯一区别是它有一些模式

scala> val a=Row(1,"hi",2,"hello")
a: org.apache.spark.sql.Row = [1,hi,2,hello]

scala> a(0)
res61: Any = 1

scala> a(2)
res62: Any = 2

scala> a(3)
res63: Any = hello

scala> val b=List(1, "hi", 2,"hello")
b: List[Any] = List(1, hi, 2, hello)

scala> b(1)
res64: Any = hi

scala> b(2)
res65: Any = 2

scala> b(3)
res66: Any = hello
请帮助我理解为什么会出现Row。

Re:

两者都提供了一种按索引访问项目的方法,即何时使用哪一个

这只是我相信的一个方面。如果将Row支持的函数与List进行比较,您可能会发现List比Row有许多其他特性。从源代码看,行似乎有一个数组作为后盾。列表与数组不同,因为它表示链表类型的数据结构。另外,如果您不使用Spark,那么您应该使用Scala库中比Spark库中任何可用且最适合的列表实现

关于:

我在第行中看到的唯一区别是它有一些模式

scala> val a=Row(1,"hi",2,"hello")
a: org.apache.spark.sql.Row = [1,hi,2,hello]

scala> a(0)
res61: Any = 1

scala> a(2)
res62: Any = 2

scala> a(3)
res63: Any = hello

scala> val b=List(1, "hi", 2,"hello")
b: List[Any] = List(1, hi, 2, hello)

scala> b(1)
res64: Any = hi

scala> b(2)
res65: Any = 2

scala> b(3)
res66: Any = hello
根据我的理解,行可以有模式也可以没有模式