从本地路径下读取目录下所有k-v格式字典,返回数据格式为Array[Map[String, String]], Map[String, Int]
实现代码:/** * 获取本地指定目录下所有字典数据 * @date Aug 4, 2017 * @author hyp * @param dicDirPath * @return */ def dicToMapXcarLocal(dicDirPath: String): (Array[Map[String, String]], Map[String, Int]) = { // 1.获取目录下所有字典文件 val dir = new File(dicDirPath) val files = dir.listFiles().filter(_.isFile()).map { x => x.getAbsolutePath } val mapAr = new Array[Map[String, String]](files.size) var keyInex = Map[String, Int]() // 2.逐个读取字典,并返回 for (i <- 0 until files.size) { val filePath = files(i).toString() val dicName = filePath.substring(filePath.lastIndexOf("/") + 1, filePath.indexOf(".")) keyInex += dicName -> i var dicMap: Map[String, String] = Map() //字典k-v值 val itLine = Source.fromFile(filePath).getLines().toIterator while (itLine.hasNext) { val tmp = itLine.next().split("\t") dicMap += tmp(0) -> tmp(1) } mapAr(i) = dicMap } return (mapAr, keyInex) }
以csid为例,返回内容为:
Array[Map{"276"->"品牌_奥迪厂商_奥迪RS", "5"->"品牌_奥迪厂商_一汽-大众奥迪", "59"->"品牌_宝马厂商_宝马(进口)", "353"->"品牌_艾康尼克厂商_艾康尼克ICONIQ Motors", "71"->"品牌_阿尔法·罗密欧厂商_阿尔法·罗密欧", "25"->"品牌_宝马厂商_华晨宝马", "81"->"品牌_阿斯顿·马丁厂商_阿斯顿·马丁", "338"->"品牌_Alpina厂商_Alpina", "63"->"品牌_奥迪厂商_奥迪(进口)", "349"->"品牌_阿斯顿·马丁厂商_AMR",},Map["csid"->0]]
- 大数据思想:
获取数据既可以从本地获取,也可以从hdfs上获取,以获取字典为例,数据量不大,如果在本地读取会更省资源,毕竟大数据的优势是处理海量数据,不能为了使用“大数据”而去用“大数据”,要根据具体的情况判断是否需要使用“大数据”。
从本地读数据并转为Map格式
最新推荐文章于 2023-11-24 13:23:51 发布