众所周知,csv文件默认以逗号“,”分割数据,那么在scala命令行里查询的数据:



可以看见,字段里就包含了逗号“,”,那接下来切割的时候,这本应该作为一个整体的字段会以逗号“,”为界限进行切割为多个字段。

现在来看看这里的_c0字段一共有多少行记录。



记住这个数字:60351行

写scala代码读取csv文件并以逗号为分隔符来分割字段

val lineRDD = sc.textFile("xxxx/xxx.csv").map(_.split(","))

这里只读取了_c0一个字段,否则会报数组下标越界的异常,至于为什么请往下看。

接着还是查询这个字段的有多少行



很显然,60364>60351

这就是把一个字段里本来就有的逗号当成了分隔符,导致一个字段切割为两个甚至多个字段,增加了行数。

所以如果csv文件的第一行本来有n个字段,但某个字段里自带有逗号,那就会切割为n+1个字段。自然就会报数组下标越界的异常了

那就把切割规则改一下,只对引号外面的逗号进行分割,对引号内的不分割

就是修改split()方法里的参数为:

split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)"))

最新文章

  1. js判断input输入框长度(支持中英文输入)
  2. nfs:环境搭建
  3. Flash Builder中“Error: #2036 加载未完成”错误的解决方法
  4. 【面试题001-补充】C++ MyString类的封装
  5. 我所理解的设计模式(C++实现)——备忘录模式(Memento Pattern)
  6. iOS10隐私设置及相应问题
  7. 社交舞 - 简介,释名,风格,舞步 - 金山词霸汉语 - HAPPY Life
  8. 手机端跳转和pc端跳转
  9. SetConsoleScreenBufferSize 函数--设置控制台屏幕缓冲区大小
  10. .net 下发送calendar
  11. vue组件如何被其他项目引用
  12. 微信小程序覆盖自定义组件样式
  13. Python之路(第三十一篇) 网络编程:简单的tcp套接字通信、粘包现象
  14. 安卓开发_深入理解Content Provider
  15. OAuth的MVC实现(微软)
  16. link和@import区别
  17. linux以16进制方式查看文件
  18. C# EF Attach 与 Entry
  19. apk中添加第三方so文件
  20. DockerCon2017前瞻 - Docker企业版体验

热门文章

  1. java 多线程40个问题汇总(转)
  2. java中使用IO流复制文件
  3. easyui中给table列表中加序号
  4. HBase内存配置及JVM优化
  5. Liunx运维(七)-用户管理及用户信息查询命令
  6. MyBatis-Plus 多表联查+分页
  7. java字符统计+字符串压缩
  8. 学习 Gin 总结(2020.12.30-31)
  9. JS常见面试题,看看你都会多少?
  10. System类常用方法