scala日收获

定义scala变量可以接受Java类对象

Scala变量接受一个java类对象的时候 实现插入数据 会出现隐式转换的问题
需要导入一个包

Scala变量接受一个java类对象的时候 实现插入数据 会出现隐式转换的问题
需要导入一个包

import scala.collection.JavaConversions._

在这里插入图片描述

在这里插入图片描述

如何解决 多级文件夹下的读取数据,小文件过多

text Files(path)能将path里的所有文件读出,以文件中发的每一行作为一条记录的方式

文件的每一行 相当于List中以“,”号隔开的一个元素,因此可以在每个partatition
中用for(i<-list)的形式遍历处理Arrary里的数据
在这里插入图片描述

在这里插入图片描述

而使用wholetextFile(path)时返回的是[(k1,v1),(k2,v,)…]的形式,其中k是读取的这个文件的路径,v是文件的内容 注意v是这个文件的整个内容
官方一句话“Each file is read as single record”这句话,每个文件作为一个记录!
这里说明这里的V 将不再是list的方式为你将文件每一行拆分成一个list的元素
而是将整个文本的内容以字符串的形式读进来,也就是 当你map((_._2))
随然得到一个文件集合 但是 都是整体内容的集合 即val=line1…\n…line2…\n
这时需要你去自己才分每一行,(有会产生一些问题 用foreach 还是用foreachpartition)
而如果你还是用for()的形式来遍历 那么得到将是每个字符
Foreachpartition(这种适用于取值以后对其他内容关联性较小的场景因为当在每个partatition执行完方法后 得到时一个新的RDD)
在这里插入图片描述

Foreach:(如果关联性教大可以使用:本人场景:多级目录下存在多个文件,每个文件里面的数据格式是 Json串 需要得到这个文件名并赋值给解析完json后的某个字段)
使用foreach是把整个读取内容当作一个RDD,(虽然他会根据内存进行分区,但是不影响)
获取文件名:
在这里插入图片描述
获得json解析并赋值:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值