Scala的Tuple元素个数的限制问题
前言
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元素个数的限制问题相关推荐
- [Scala]集合中List元素转Tuple元素的函数迭代写法
____ 本文链接: https://www.cnblogs.com/senwren/p/Scala-Lis-2-Tuple.html -- Scala没有提供相应写法, 但迭代写法仍然可以做到. 有 ...
- python内置函数返回元素个数_Python内置函数
Python Python开发 Python语言 Python内置函数 Python内置函数 一.内置函数 什么是内置函数? 就是python给你提供的. 拿来直接⽤的函数, 比如print, inp ...
- Redis 笔记(06)— set 类型(向集合添加元素、获取集合元素个数、判断集合中是否包含某个元素、删除给定元素、返回集合中所有元素、计算集合的交集、并集、差集)
Redis 的 set 集合内部的键值对是无序的唯一的.它的内部实现相当于一个特殊的字典,字典中所有的 value 都是一个值 NULL .当集合中最后一个元素移除之后,数据结构自动删除,内存被回收. ...
- 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 ...
- lintcode---线段树查询||(区间元素个数)
对于一个数组,我们可以对其建立一棵 线段树, 每个结点存储一个额外的值 count 来代表这个结点所指代的数组区间内的元素个数. (数组中并不一定每个位置上都有元素) 实现一个 query 的方法,该 ...
- python内置函数可以返回列表元组_Python内置函数()可以返回列表、元组、字典、集合、字符串以及range对象中元素个数....
Python内置函数()可以返回列表.元组.字典.集合.字符串以及range对象中元素个数. 青岛远洋运输有限公司冷聚吉船长被评为全国十佳海员.()A:错B:对 有源逆变是将直流电逆变成其它频率的交流 ...
- POJ2771最大独立集元素个数
题意: 女生和男生之间只要满足四个条件中的一个,那么两个人就不会在一起!然后给出一些男生和女生,问最多多少人一起做活动彼此不会产生暧昧关系. 思路: 这样的问题还是比较裸的问法 ...
- POJ 1201 差分约束(集合最小元素个数)
题意: 给你一个集合,然后有如下输入,a ,b ,c表示在范围[a,b]里面有至少有c个元素,最后问你整个集合最少多少个元素. 思路: 和HDU1384一模一样,首先这个题目可 ...
- POJ3692 最大点权独立集元素个数
题意: n个男孩和m个女孩,给你他们谁和谁彼此了解,问你要找到一个集合,使得这个集合中的男孩和女孩相互了解,并且人数最多. 思路: 简单题目,其实就是在求最大点权独立集元素个数,先 ...
最新文章
- 《OpenCV3编程入门》学习笔记7 图像变换(四 )仿射变换
- MVC框架内容-模型
- 脚本-收集计算机信息
- 布隆过滤器避免redis缓存穿透
- vue生成包报错error from UglifyJs
- Python实战-获取鼠标键盘事件
- 读书笔记_中国期货市场量化交易(李尉)01
- 从无到有axure原型设计_Axure|微信原型制作
- RHEL7.X双网卡绑定
- 《Clojure程序设计》——第1章,第1.3节探索Clojure的程序库
- 圆角进度条,带数字居中显示的圆角进度条
- linux系统安装花生壳
- 【孪生网络siamfc代码学习】
- sqlmap的简单使用(sql注入)
- Windows XP 下载与安装-怀念过去
- 图画日记怎么画_画画提高的一个方法: 绘画日记!
- python面向对象学习
- php smarty框架案例,PHP框架_Smarty
- Apple Swift学习资料汇总
- 【JDK下载与安装教程】
热门文章
- 迭代器、生成器、函数递归与二分法
- 1040 最大公约数之和
- [Java反射基础四]通过反射了解集合泛型的本质
- 算法_栈的Java的通用数组实现
- Python BFS 提取二值图联通域
- linux find acm time
- 六天学会BASIC语言的方法——计算机达人成长之路(10)连载
- Oracle数据导入导出imp/exp命令 [转]
- C++中include头文件使用与的区别
- c include 多层目录_Gradle多模块(工程)配置解析 - 满足每个开发者的目录喜好