前言

Spark在读取文件的时候惯用的手法如下:

spark.read.textFile("./data/tuple").map(_.split(",")).map(x => (x(0), x(1), x(2), x(3), x(4), x(5), x(6), x(7), x(8), x(9), x(10),x(11), x(12), x(13), x(14), x(15), x(16), x(17), x(18), x(19), x(20), x(21), x(22), x(23), x(24)))

也就是读取文件,然后切分字段,封装为Tuple,可是Scala中Tuple的元素个数最多不能超过22个,否则:

tuples may not have more than 22 elements, but 25 givenx(11), x(12), x(13), x(14), x(15), x(16), x(17), x(18), x(19), x(20), x(21), x(22), x(23), x(24)))

具体Scala为什么这么设计,大概率原因是认为元组中有22 个元素无论如何都已经足够多了,直到今天为止Scala研发人员并没有意图去取消掉这个限制(Scala最新版本为2.13.1)

如何处理

测试数据:

1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25
  • 最常用的处理方式
    使用数组
import spark.implicits._spark.read.textFile("./data/tuple").map(_.split(",")).select($"value" (0).cast("string").as("col0"),$"value" (1).cast("string").as("col1"),$"value" (2).cast("string").as("col2"),$"value" (3).cast("string").as("col3"),$"value" (4).cast("string").as("col4"),$"value" (5).cast("string").as("col5"),$"value" (6).cast("string").as("col6"),$"value" (7).cast("string").as("col7"),$"value" (8).cast("string").as("col8"),$"value" (9).cast("string").as("col9"),$"value" (10).cast("string").as("col10"),$"value" (11).cast("string").as("col11"),$"value" (12).cast("string").as("col2"),$"value" (13).cast("string").as("col13"),$"value" (14).cast("string").as("col14"),$"value" (15).cast("string").as("col15"),$"value" (16).cast("string").as("col16"),$"value" (17).cast("string").as("col17"),$"value" (18).cast("string").as("col18"),$"value" (19).cast("string").as("col19"),$"value" (20).cast("string").as("col20"),$"value" (21).cast("string").as("col21"),$"value" (22).cast("string").as("col22"),$"value" (23).cast("string").as("col23"),$"value" (24).cast("string").as("col24")).show()

结果:

+----+----+----+----+----+----+----+----+----+----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
|col0|col1|col2|col3|col4|col5|col6|col7|col8|col9|col10|col11|col2|col13|col14|col15|col16|col17|col18|col19|col20|col21|col22|col23|col24|
+----+----+----+----+----+----+----+----+----+----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
|   1|   2|   3|   4|   5|   6|   7|   8|   9|  10|   11|   12|  13|   14|   15|   16|   17|   18|   19|   20|   21|   22|   23|   24|   25|
|   1|   2|   3|   4|   5|   6|   7|   8|   9|  10|   11|   12|  13|   14|   15|   16|   17|   18|   19|   20|   21|   22|   23|   24|   25|
+----+----+----+----+----+----+----+----+----+----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+

Scala的Tuple元素个数的限制问题相关推荐

  1. [Scala]集合中List元素转Tuple元素的函数迭代写法

    ____ 本文链接: https://www.cnblogs.com/senwren/p/Scala-Lis-2-Tuple.html -- Scala没有提供相应写法, 但迭代写法仍然可以做到. 有 ...

  2. python内置函数返回元素个数_Python内置函数

    Python Python开发 Python语言 Python内置函数 Python内置函数 一.内置函数 什么是内置函数? 就是python给你提供的. 拿来直接⽤的函数, 比如print, inp ...

  3. Redis 笔记(06)— set 类型(向集合添加元素、获取集合元素个数、判断集合中是否包含某个元素、删除给定元素、返回集合中所有元素、计算集合的交集、并集、差集)

    Redis 的 set 集合内部的键值对是无序的唯一的.它的内部实现相当于一个特殊的字典,字典中所有的 value 都是一个值 NULL .当集合中最后一个元素移除之后,数据结构自动删除,内存被回收. ...

  4. PyTorch 笔记(04)— Tensor 属性方法(获取元素个数numel/neleme、查看形状size()/shape、增减维度squeeze()/unsqueeze()、resize形状)

    1. 获取 Tensor 元素个数 获取 Tensor 的元素个数 ,a.numel() 等价 a.nelement() In [1]: import torch as t In [5]: a = t ...

  5. lintcode---线段树查询||(区间元素个数)

    对于一个数组,我们可以对其建立一棵 线段树, 每个结点存储一个额外的值 count 来代表这个结点所指代的数组区间内的元素个数. (数组中并不一定每个位置上都有元素) 实现一个 query 的方法,该 ...

  6. python内置函数可以返回列表元组_Python内置函数()可以返回列表、元组、字典、集合、字符串以及range对象中元素个数....

    Python内置函数()可以返回列表.元组.字典.集合.字符串以及range对象中元素个数. 青岛远洋运输有限公司冷聚吉船长被评为全国十佳海员.()A:错B:对 有源逆变是将直流电逆变成其它频率的交流 ...

  7. POJ2771最大独立集元素个数

    题意:       女生和男生之间只要满足四个条件中的一个,那么两个人就不会在一起!然后给出一些男生和女生,问最多多少人一起做活动彼此不会产生暧昧关系. 思路:       这样的问题还是比较裸的问法 ...

  8. POJ 1201 差分约束(集合最小元素个数)

    题意:       给你一个集合,然后有如下输入,a ,b ,c表示在范围[a,b]里面有至少有c个元素,最后问你整个集合最少多少个元素. 思路:       和HDU1384一模一样,首先这个题目可 ...

  9. POJ3692 最大点权独立集元素个数

    题意:      n个男孩和m个女孩,给你他们谁和谁彼此了解,问你要找到一个集合,使得这个集合中的男孩和女孩相互了解,并且人数最多. 思路:      简单题目,其实就是在求最大点权独立集元素个数,先 ...

最新文章

  1. 《OpenCV3编程入门》学习笔记7 图像变换(四 )仿射变换
  2. MVC框架内容-模型
  3. 脚本-收集计算机信息
  4. 布隆过滤器避免redis缓存穿透
  5. vue生成包报错error from UglifyJs
  6. Python实战-获取鼠标键盘事件
  7. 读书笔记_中国期货市场量化交易(李尉)01
  8. 从无到有axure原型设计_Axure|微信原型制作
  9. RHEL7.X双网卡绑定
  10. 《Clojure程序设计》——第1章,第1.3节探索Clojure的程序库
  11. 圆角进度条,带数字居中显示的圆角进度条
  12. linux系统安装花生壳
  13. 【孪生网络siamfc代码学习】
  14. sqlmap的简单使用(sql注入)
  15. Windows XP 下载与安装-怀念过去
  16. 图画日记怎么画_画画提高的一个方法: 绘画日记!
  17. python面向对象学习
  18. php smarty框架案例,PHP框架_Smarty
  19. Apple Swift学习资料汇总
  20. 【JDK下载与安装教程】

热门文章

  1. 迭代器、生成器、函数递归与二分法
  2. 1040 最大公约数之和
  3. [Java反射基础四]通过反射了解集合泛型的本质
  4. 算法_栈的Java的通用数组实现
  5. Python BFS 提取二值图联通域
  6. linux   find acm time
  7. 六天学会BASIC语言的方法——计算机达人成长之路(10)连载
  8. Oracle数据导入导出imp/exp命令 [转]
  9. C++中include头文件使用与的区别
  10. c include 多层目录_Gradle多模块(工程)配置解析 - 满足每个开发者的目录喜好