首页 > 编程知识 正文

scala框架,json怎么转成map

时间:2023-05-03 15:30:56 阅读:126925 作者:159

在网上,分析了平板地图和地图的区别,寻找了一些好东西,增加了自己的理解:

1https://www.Jian Shu.com/p/c 64 f 278 a 9902 map操作vallinearray=array(Helloyou )、(hello me )、(hello world ) ) vallines

平板映射操作vallinearray=Array('Helloyou '、' hello me '、' hello world ' ) vallines=sc.Parallelize ) Linearray,1 ) val

Map操作,size与以前相同,但flatMap操作基于Map展开所有元素,导致变换后的size原始数据的size。

再来看看另一个例子

2https://www.cn blogs.com/wbh 1000/p/9846401.htmlimportorg.Apache.spark.{ spark conf, spark context (对象映射平面) defmain ) args : array [字符串] ) :unit=) valsc=newsparkcontext ) newsparkcontext ) ) mals c65.set appname (map _ flat map _ demo rray ) a_b )、' e_f ' ) (arrayrdd.foreach(println ) /打印结果1arrayrdd.map ) string={string.split ) ) _'}

为什么没有印刷结果3”,“

因为平面图将所有元素视为一个Array,例如Array(「a”)、Array(「a”)

因此,如果Array元素为1,则mkstring自然禁用。

举个例子,可以更直观地看到平面贴图拆分了所有元素,而不保留原始每行的结构。

这两个例子都是从网上摘录的,其实我在看map和flatMap的官网API

可以定义输出类型[B]。 如果不知道,可以利用这个消除疑惑。

valtmp:rdd[(String,String ) ]=RES.flatmap[(String,String ) sample={varpairseq=seq ) ) String,stting=空(pair seq=pair seq : ) previousitem, element(}previousitem=element ) (pairSeq } ) tmp.take(3)3).foreach { println } println (' @ @ @ @ @ (striririon ) String ) ) sample={varpairseq=seq[(String,string ) ] var previous=null (pair seq=pair seq 3360 ) previousitem element } } previous item=element } (pair seq ) ) tmp2.take(3).foreach { println }的结果是原始RES:rdd[seq[string] 480、266、3、260、541和924 ) wrappedarray ) 589、858、904 593、223、490、175、1、610、788、480、316和329 (tmp 329 ) 。 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ tmp 2: rdd [ seq [ [ string,string]]list (() 151,541,23 ) list () 260 )、260、318 )、318、924、953 )、953、50 )、50、32、541 )、541、457 )、541、457 ) )。 (610,788 )、788,480 )、480,316 )、316,329 ) )如上所述,map在转换每行的结果后返回结果之和,size与原始res匹配。

另一方面,flatMap是将map结果逐行分解、单独作为一行来生成结果size原始res的size。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。