标签:map retData idx datas foreach spark concat
1、关于map与foreach区别:
map:遍历RDD,将函数f应用于每一个元素,返回新的RDD(transformation算子);
foreach:遍历RDD,将函数f应用于每一个元素,无返回值(action算子);
2、切记:spark中对变量的修改没有原地修改,这个和Python有很大区别
(1)val amendDatas: Seq[DataFrame] = datas.indices.map(idx=>{
datas(idx).withColumn(columnName.concat("_").concat(idx.toString),getCode(datas(idx)(columnName)))
})
说明:datas原本是一个Array[DataFrame]变量,等号右边对array中的每一个元素做了transform,结果等号右边相当于形成了一个新的Array[T],但是需注意的是,如果要使用这个新的Array[T]则需要赋值给一个新的变量,原来的datas并不会被改变;
(2) var retData = amendDatas.head
Range(1,datas.length).foreach{i => {
retData = retData.join(amendDatas(i).select(idName,columnName.concat("_").concat(i.toString)),idName)
}}
说明:retData尽管被定义为var类型,仅代表它可以被重新赋值修改值,因此foreach里如果不把retData=重新赋值,它的值也是不会被改变的。
标签:map,retData,idx,datas,foreach,spark,concat 来源: https://blog.csdn.net/weixin_39732131/article/details/122069964
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。