【发布时间】:2017-04-21 16:41:01
【问题描述】:
我有以下 csv 文件:
Name Age City Start Stop Point
Mike 29 Fuji 10 30 5
Mike 29 Fuji 0 10 7
Susan 26 Fuji 77 1000 9
我正在尝试访问该点、名字、年龄、城市和范围
给出的例子:
Mike, 29, Fuji, 15 will yield 5
Mike, 29, Fuji, 5 will yield 7
Susan, 26, Fuji, 990 will yield 9
Susan, 26, Fuji, 1500 will yield 0 since there's no match
我阅读了 csv 并尝试构建一个 Scala Map[String, Map[Int, Map[String, Map[Int, Int]]]] 但考虑到我有几千条记录,这不是很可扩展。开始和停止范围是不相交的,并且必须与其他行相关。
如何在不使用 SQL 数据库或 KeyValue 存储的情况下有效地编码和解码这些数据?任何帮助将不胜感激。
【问题讨论】:
-
你能发布你的代码吗?
-
所有记录的间隔是否不相交?
-
@Laurent 是的,它们在所有记录之间是不相交的
-
@Amanda,我对 Scala 的了解不足以提供答案,但从数据结构的角度来看,您可以使用区间树基于区间进行有效查找(尽管在内存不是很多)。例如,Guava 库中的 TreeRangeMap 类是一个实现。
标签: scala csv data-structures encoding hashmap