首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala -如何将csv表读入两个不确定大小的数组/矩阵

Scala -如何将csv表读入两个不确定大小的数组/矩阵
EN

Stack Overflow用户
提问于 2018-03-23 20:31:09
回答 2查看 716关注 0票数 0

我想从一个巨大的csv文件中读取,通过将值拆分为",“将每一行分配给数组。最后,我的目标是有一个数组(行)来保存这些值。到目前为止我的代码是这样的:

代码语言:javascript
复制
val file = "/home/tolga/Desktop/mics18-2/big-data/homework2/covtype.csv/data-10.csv"
for(line <- Source.fromFile(file).getLines){
  val seriesArray : Array = line.split(",").map(_.toInt).distinct /*error on this line*/
  println(line)
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-23 20:46:56

对于我的测试文件,我必须做一些调整:

代码语言:javascript
复制
for(line <- Source.fromFile(file).getLines){
     val seriesArray : Array[Int] = line.split (",").filter (_.trim.size > 0).map (_.toInt).distinct
     println(line) }
  • 不是数组,而是错误消息中的ArrayInt
  • 我得把绳子修剪一下,也许是线尾的一件艺术品
  • 检查大小> 0,避免"".toInt

最后两个可能与您的文件无关。

不,这不会产生2 2dim数组。它只在一行上操作,将其赋值给seriesArray,这是一个单一的数组,并覆盖每个行的值。

保留所有的线条

代码语言:javascript
复制
scala> val seriesArray : Array[Array[Int]] = (
     |   for (line <- Source.fromFile(file).getLines) yield 
     |     line.split (",").filter (_.trim.size > 0).map (_.toInt).distinct).toArray

这表明,我的测试数据:

代码语言:javascript
复制
seriesArray: Array[Array[Int]] = Array(Array(), Array(1, 49, 999), Array(), Array(1, 49, 1000), Array(), Array(1, 50, 999), Array(), Array(1, 50, 1000), Array(), Array(1, 51, 999), Array(), Array(1, 51, 1000), Array(), Array(2, 49, 999), Array(), Array(2, 49, 1000), Array(), Array(2, 50, 999), Array(), Array(2, 50, 1000), ...

对于打印,您需要有点耐心,因为print语句返回的是Unit,而不是数据。

票数 1
EN

Stack Overflow用户

发布于 2018-03-25 17:47:32

对于基于火花的解决方案,最终结果将是一个RDD[Array[Int]],而不是严格地说是一个“二维数组”,因为RDD是一个分区的、分布式的、不可变的“数组”的抽象。

将CSV文件加载到RDD中很简单,但关键在于细节。给定一个简单的文件,例如这个data.csv文件:

代码语言:javascript
复制
1,1,3,2
2,22,3,18
3,3,12,25

下列措施将起作用:

代码语言:javascript
复制
val rdd = sc.textFile("data.csv").map(_.split(",").map(_.toInt))

但是,如果输入必须以某种方式“清除”(例如删除标题行、修剪值、筛选出非整数等)您必须使用RDD的方法(如filtermap )来完成此操作。如果您在这样的清理中遇到特定的问题,搜索特定的问题或者在代码中发布一个新的问题,您看到的数据就是您看到的错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49457875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档