Scala spark shell中的行与列表
Spark Row和Scala List的区别是什么, 两者都提供了通过索引访问项目的方法 什么时候用哪个 我在第行中看到的唯一区别是它有一些模式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
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
根据我的理解,行可以有模式也可以没有模式