前言

在运行例子的时候. 遇到需要去除表头的情况. 将一般的几种做法记录于此.

  • 文件
班级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 去掉前几行 去掉表头相关推荐

  1. mysql 去掉前面的0_去掉前面的0的sql语句(前导零,零前缀)

    去掉前面的0的sql语句(前导零,零前缀) 原来sql还有个stuff的函数,很强悍. 一个列的格式是单引号后面跟着4位的数字,比如'0003,'0120,'4333,我要转换成3,120,4333这 ...

  2. 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 >> ...

  3. python 数组去重复_numpy数组去掉重复的行,保留唯一的行数据

    有以下numpy.array数据:>>> original_array # array([[1, 1, 1, 0, 0, 0], [0, 1, 1, 1, 0, 0], [0, 1, ...

  4. pandas使用read_csv函数读取文件的前N行数据并保留表头、pandas使用read_csv函数读取制表符分割的文件(tab-delimited)、自定义设置sep参数

    pandas使用read_csv函数读取文件的前N行数据并保留表头.pandas使用read_csv函数读取制表符分割的文件(tab-delimited).自定义设置sep参数 目录

  5. vim实现多行注释,多行去掉注释,多行删除

    多行注释: 1.确定vim在命令模式,按"ctrl+v"组合键,进入visual block模式: 2.选择要注释的所有列,不用选中全行,光标选中行首的第一个字节(形成单列)即可: ...

  6. c++ 字符串去掉首尾空格_C++ 去掉字符串的首尾空格和全部空格

    #include #include using namespace std; //去掉收尾空格 string& ClearHeadTailSpace(string &str) { if ...

  7. 面试官:请解释一下Twitter的前10行源代码

    开发者(KaiFaX) 面向全栈工程师的开发者专注于前端.Java/Python/Go/PHP的技术社区 本文转自公众号"CSDN",ID:CSDNnews 作者 | Anand ...

  8. oracle数据库取前几行,Oracle数据库实现获取前几条数据的方法

    如何在Oracle数据库中实现获取前几条数据的方法呢?就是类似SQL语句中的SELECT TOP N的方法.本文将告诉您答案,举例说明了哟! 1.在Oracle中实现SELECT TOP N : 由于 ...

  9. 各个数据库取前10行记录

    SQL查询前10条的方法为: 1.select top X *  from table_name --查询前X条记录,可以改成需要的数字,比如前10条. 2.select top X *  from  ...

最新文章

  1. OPENCV中的数据结构总结
  2. 牛客题霸 SQL4 查找所有已经分配部门的员工的last_name和first_name以及dept_no
  3. vim cscope taglist 使用
  4. 你当初是如何走上编程之路的?
  5. 算法高级(38)-短网址(short URL)系统如何实现?
  6. 清华学霸直博简历火了:CPU、操作系统、编译器全自己写
  7. Vue插件_自己封装插件_以及使用自定义插件---vue工作笔记0017
  8. websocket连接出现 HTTP Authentication failed; no valid credentials available
  9. 数字积分法插补c语言程序,数字积分法插补原理
  10. 【自我救赎--牛客网Top101 4天刷题计划】 第四天 登峰造极
  11. arcserver开发小结(三)
  12. php 图片 中文乱码,php utf8页面验证码图片中文乱码
  13. 什么是台式机主板的“双通道”认知误区?
  14. xingtai -飞机大战2。0
  15. 大数据就业前景真的那么好吗
  16. CTF中php相关考点
  17. 主机上连接到 vmware虚拟机的三种方式
  18. 计算机科学大师唐纳德,现代计算机科学的鼻祖,编程界的上帝,视全世界的码农当作艺术家...
  19. W3150A+评估板--EVB-PIC24用户手册(四)硬件设计指南
  20. 年仅19岁!西班牙最危险黑客被捕

热门文章

  1. owmctab.plb oracle,ORA-00904: WMSYS.WM_CONCAT: invalid identifier
  2. Servlet如何凭空制造一个图像Image?
  3. 1485. 圣杯咒语
  4. 查题公众号免费搭建-内附题库
  5. Java之线程安全问题浅析
  6. Linux mount--目录挂载新磁盘后原文件不见了
  7. 怎么把手机游戏隐藏在计算机里,我把程序中的游戏隐藏了,怎么找到并恢复?...
  8. finereport公式帮助
  9. python工资一般多少转行_强烈建议|转行Python最好看一下这篇文章
  10. nodejs+vue+elementui台球厅会员球桌预约管理系统