【发布时间】:2015-02-15 08:52:57
【问题描述】:
我在How do I convert csv file to rdd尝试了接受的解决方案,我想打印除“om”之外的所有用户:
val csv = sc.textFile("file.csv") // original file
val data = csv.map(line => line.split(",").map(elem => elem.trim)) //lines in rows
val header = new SimpleCSVHeader(data.take(1)(0)) // we build our header with the first line
val rows = data.filter(line => header(line,"user") != "om") // filter the header out
val users = rows.map(row => header(row,"user")
users.collect().map(user => println(user))
但我得到了一个错误:
java.util.NoSuchElementException: key not found: user
我尝试调试它并在header 中找到index 属性,如下所示:
由于我是 spark 和 scala 的新手,这是否意味着 user 已经在 Map 中?那为什么会出现key not found 错误呢?
【问题讨论】:
-
我无法重现您的问题。在 REPL 中,它返回:
Array[String] = Array(user, daniel, 3754978)。顺便说一句,我猜你仍然想通过data.filter(line => header(line,"user") != "user"))过滤掉标题 -
你能在文件中添加第一行数据吗?
-
@maasg,感谢您的 cmets。我发现了我的错误,这不是 spark/scala 的问题,这是我创建 csv 时犯的错误,我将在下面的答案中解释更多。
标签: scala csv apache-spark