Spark 去掉前几行 去掉表头
前言
在运行例子的时候. 遇到需要去除表头的情况. 将一般的几种做法记录于此.
- 文件
班级ID 姓名 年龄 性别 科目 成绩
12 张三 25 男 chinese 50
12 张三 25 男 math 60
12 张三 25 男 english 70
12 李四 20 男 chinese 50
12 李四 20 男 math 50
12 李四 20 男 english 50
12 王芳 19 女 chinese 70
12 王芳 19 女 math 70
12 王芳 19 女 english 70
13 张大三 25 男 chinese 60
13 张大三 25 男 math 60
13 张大三 25 男 english 70
13 李大四 20 男 chinese 50
13 李大四 20 男 math 60
13 李大四 20 男 english 50
13 王小芳 19 女 chinese 70
13 王小芳 19 女 math 80
13 王小芳 19 女 english 70
相关操作-个人选择
- 去除第一行
# 使用textFile读取整个文件.
JavaRDD<String> examLinesRDD = SeanSparkConfig.sparkContext.textFile(SeanSparkConfig.exameDateFilePath);# 读取文件第一行
String firstLine = examLinesRDD.first();
JavaRDD<Student> studentRDD;studentRDD = examLinesRDD.filter(line -> !line.equals(firstLine)). // 去除第一行表头
其实使用filter()
算子过滤我们需要抛弃的行是最容易的操作.
其余相关操作(参考1)
参考1
delcomments = ["嗯嗯嗯嗯", "啦啦啦", "买买买买"]
def delcom(line):for i in delcomments:if i in line:return 1return 0comment = comment.filter(lambda line: delcom(line) != 1)
如何删掉rdd中的某几行数据?
参考2
# 使用zipWithIndex算子
rdd.zipWithIndex().filter(_._2>=n).keys // n换成对应的第几列即可
Spark RDD去掉前n行数据
参考3-比较详细
- 方法1-zipWithIndex 索引法.
val path = "files/data.txt"
val rdd = sc.textFile(path)
println("分区数:" + rdd.getNumPartitions)
val rdd1 = rdd.zipWithIndex()
//过滤掉索引小于等于2的
val rdd2 = rdd1.filter(_._2 > 2)
rdd1.foreach(println)
println("**********分割线***********")
rdd2.map(kv => kv._1).foreach(println)
根据统计. 其与分片无关. 但是当数据量过多时, 加索引产生性能问题.
- 方法2-take/fileter 法
val path = "files/data.txt"
val rdd = sc.textFile(path, 8)
println("分区数:" + rdd.getNumPartitions)
//前三条
val arr = rdd.take(3)
//过滤掉arr里的数据
val rdd3 = rdd.filter(!arr.contains(_))
rdd3.foreach(println)
- 方法3-Linux相关命令
# 查询原文件
cat data.txt
# 新建覆盖文件
tail -n+4 data.txt > data_new.txt
# 替换
mv data_new.txt data.txt
文件过大可能会有问题?
如何解决spark开发中遇到需要去掉文件前几行数据的问题
总结
其实思路非常简单. 查询出你需要过滤的数据, 使用filter
算子进行过滤即可.
对于不同分片上的数据. 你可以考虑写死代码的方式.
即String toFilter="姓名 年龄 ID 性别"; rdd.filter(str->!str.equals(toFilter))
.
还有一点值得注意的是, 使用equals
替换==
. 因为多个Executor
的情况下, 是在不同JVM
中的.
Spark 去掉前几行 去掉表头相关推荐
- mysql 去掉前面的0_去掉前面的0的sql语句(前导零,零前缀)
去掉前面的0的sql语句(前导零,零前缀) 原来sql还有个stuff的函数,很强悍. 一个列的格式是单引号后面跟着4位的数字,比如'0003,'0120,'4333,我要转换成3,120,4333这 ...
- matlab中去掉矩阵重复行并且不改变原顺序
1.使用unique去掉矩阵中的重复行. >> e=[2,2,2;3,3,3;1,1,1;1,1,1;0,0,0]e =2 2 23 3 31 1 11 1 10 0 0 >> ...
- python 数组去重复_numpy数组去掉重复的行,保留唯一的行数据
有以下numpy.array数据:>>> original_array # array([[1, 1, 1, 0, 0, 0], [0, 1, 1, 1, 0, 0], [0, 1, ...
- pandas使用read_csv函数读取文件的前N行数据并保留表头、pandas使用read_csv函数读取制表符分割的文件(tab-delimited)、自定义设置sep参数
pandas使用read_csv函数读取文件的前N行数据并保留表头.pandas使用read_csv函数读取制表符分割的文件(tab-delimited).自定义设置sep参数 目录
- vim实现多行注释,多行去掉注释,多行删除
多行注释: 1.确定vim在命令模式,按"ctrl+v"组合键,进入visual block模式: 2.选择要注释的所有列,不用选中全行,光标选中行首的第一个字节(形成单列)即可: ...
- c++ 字符串去掉首尾空格_C++ 去掉字符串的首尾空格和全部空格
#include #include using namespace std; //去掉收尾空格 string& ClearHeadTailSpace(string &str) { if ...
- 面试官:请解释一下Twitter的前10行源代码
开发者(KaiFaX) 面向全栈工程师的开发者专注于前端.Java/Python/Go/PHP的技术社区 本文转自公众号"CSDN",ID:CSDNnews 作者 | Anand ...
- oracle数据库取前几行,Oracle数据库实现获取前几条数据的方法
如何在Oracle数据库中实现获取前几条数据的方法呢?就是类似SQL语句中的SELECT TOP N的方法.本文将告诉您答案,举例说明了哟! 1.在Oracle中实现SELECT TOP N : 由于 ...
- 各个数据库取前10行记录
SQL查询前10条的方法为: 1.select top X * from table_name --查询前X条记录,可以改成需要的数字,比如前10条. 2.select top X * from ...
最新文章
- OPENCV中的数据结构总结
- 牛客题霸 SQL4 查找所有已经分配部门的员工的last_name和first_name以及dept_no
- vim cscope taglist 使用
- 你当初是如何走上编程之路的?
- 算法高级(38)-短网址(short URL)系统如何实现?
- 清华学霸直博简历火了:CPU、操作系统、编译器全自己写
- Vue插件_自己封装插件_以及使用自定义插件---vue工作笔记0017
- websocket连接出现 HTTP Authentication failed; no valid credentials available
- 数字积分法插补c语言程序,数字积分法插补原理
- 【自我救赎--牛客网Top101 4天刷题计划】 第四天 登峰造极
- arcserver开发小结(三)
- php 图片 中文乱码,php utf8页面验证码图片中文乱码
- 什么是台式机主板的“双通道”认知误区?
- xingtai -飞机大战2。0
- 大数据就业前景真的那么好吗
- CTF中php相关考点
- 主机上连接到 vmware虚拟机的三种方式
- 计算机科学大师唐纳德,现代计算机科学的鼻祖,编程界的上帝,视全世界的码农当作艺术家...
- W3150A+评估板--EVB-PIC24用户手册(四)硬件设计指南
- 年仅19岁!西班牙最危险黑客被捕
热门文章
- owmctab.plb oracle,ORA-00904: WMSYS.WM_CONCAT: invalid identifier
- Servlet如何凭空制造一个图像Image?
- 1485. 圣杯咒语
- 查题公众号免费搭建-内附题库
- Java之线程安全问题浅析
- Linux mount--目录挂载新磁盘后原文件不见了
- 怎么把手机游戏隐藏在计算机里,我把程序中的游戏隐藏了,怎么找到并恢复?...
- finereport公式帮助
- python工资一般多少转行_强烈建议|转行Python最好看一下这篇文章
- nodejs+vue+elementui台球厅会员球桌预约管理系统