scala – 加入/不使用Spark SQL的两个普通RDD
发布时间:2020-12-16 09:13:42 所属栏目:安全 来源:网络整理
导读:我需要在一个/多个列上加入两个普通的RDD.逻辑上这个操作相当于两个表的数据库连接操作.我不知道这是否可能只有通过Spark SQL或有其他方式来做. 作为一个具体的例子,考虑一下 RDD r1与主键ITEM_ID: (ITEM_ID,ITEM_NAME,ITEM_UNIT,COMPANY_ID) 和RDD r2与主
我需要在一个/多个列上加入两个普通的RDD.逻辑上这个操作相当于两个表的数据库连接操作.我不知道这是否可能只有通过Spark SQL或有其他方式来做.
作为一个具体的例子,考虑一下 (ITEM_ID,ITEM_NAME,ITEM_UNIT,COMPANY_ID) 和RDD r2与主键COMPANY_ID: (COMPANY_ID,COMPANY_NAME,COMPANY_CITY) 我想加入r1和r2. 如何才能做到这一点? 解决方法
Soumya Simanta给了一个很好的答案.然而,连接的RDD中的值是可迭代的,因此结果可能与普通表加入不太相似.
或者,您可以: val mappedItems = items.map(item => (item.companyId,item)) val mappedComp = companies.map(comp => (comp.companyId,comp)) mappedItems.join(mappedComp).take(10).foreach(println) 输出将是: (c1,(Item(1,first,2,c1),Company(c1,company-1,city-1))) (c1,(Item(2,second,city-1))) (c2,(Item(3,third,c2),Company(c2,company-2,city-2))) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |