scala - 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 出现在图片中。
解决方案
回覆:
两者都提供了一种按索引访问项目的方法何时使用哪个
这只是我相信的一方面。如果你看一下 Row 与 List 相比支持的功能,你可能会发现 List 比 Row 有很多额外的功能。查看源代码,似乎 Row 由数组支持。List 与 Array 不同,因为它表示 Linked List 类型的数据结构。此外,如果您不使用 Spark,那么您应该在 Scala 库中使用任何可用且最适合的 List 实现,而不是在 Spark 库中。
回覆:
我在 Row 中看到的唯一区别是它有一些模式。
根据我的理解,可以使用或不使用模式来构造行。
推荐阅读
- javascript - 页面完全硬刷新 - Ctrl+shift+r
- javascript - Spring Boot 删除映射数组作为参数
- c++ - 流输入如何在 C++ 中使用 cin 工作?
- apache - Apache2 和 solr 与 SSL 使用 proxypass
- ios - 包含在 UIBarButtonItem 中时增加 UIButton 的固有大小
- php - 从 php 中的 url 抓取数据,第一个 url 有效,但其他具有相同结构的 url 没有,只有 id 不同
- android - 哪种方法更适合自定义视图:创建新的 Handler 还是使用现有的?
- clojure - 我不确定这个函数如何让线程进入睡眠状态
- javascript - 调用设置的间隔函数时触发倒计时
- python - 如何在 PyCharm 的项目选项卡中跟踪活动项目