从本地读数据并转为Map格式

15 篇文章 0 订阅
5 篇文章 0 订阅
  1. 从本地路径下读取目录下所有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]]
    
  2. 大数据思想:
    获取数据既可以从本地获取,也可以从hdfs上获取,以获取字典为例,数据量不大,如果在本地读取会更省资源,毕竟大数据的优势是处理海量数据,不能为了使用“大数据”而去用“大数据”,要根据具体的情况判断是否需要使用“大数据”。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值