首页 > 解决方案 > spark-shell中的行与列表

问题描述

Spark Row 和 Scala List 有什么区别,两者都提供了一种按索引访问项目的方法 何时使用哪一个

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

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 出现在图片中。

标签: scalaapache-sparkspark-shell

解决方案


回覆:

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

这只是我相信的一方面。如果你看一下 Row 与 List 相比支持的功能,你可能会发现 List 比 Row 有很多额外的功能。查看源代码,似乎 Row 由数组支持。List 与 Array 不同,因为它表示 Linked List 类型的数据结构。此外,如果您不使用 Spark,那么您应该在 Scala 库中使用任何可用且最适合的 List 实现,而不是在 Spark 库中。

回覆:

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

根据我的理解,可以使用或不使用模式来构造行。


推荐阅读