我开始使用RDD,我有一些疑问。就我而言,我有一个RDD,我想对他的数据进行分类。我的RDD包含以下内容:
Array[(String, String)] = Array((data: BD=bd_users,BD_classified,contains_people, rbd: BD=bd_users,BD_classified,contains_people),
(data: BD=bd_users,BD_classified,contains_people,contains_users, user: id=8282bd, BD_USERS,bdd),
(data: BD=bd_experts,BD_exp,contains_exp,contains_adm, rbd: BD=bd_experts,BD_ea,contains_exp,contains_adm),
(data: BD=bd_test,BD_test,contains_acc,contains_tst, rbd: BD=bd_test,BD_test,contains_tst,contains_t))
正如您所看到的,RDD包含两个字符串,第一个以数据开头,第二个以rbd开头。我想做的是对这个RDD的每个实例进行分类,正如你在这里看到的:
If the instance contains bd_users & BD_classified -> users
bd_experts & BD_exp -> experts
BD_test -> tests
输出对于这个RDD:应该是这样的
1. Users
2. Users
3. Experts
4. Test
要做到这一点,我想使用一个映射,为这个RDD中的每个实例调用一个函数,但我不知道如何定位:
val rdd_groups = rdd_1.map(x=>x(0).toString).map(x => getGroups(x))
def getGroups(input: String): (String) = {
//here i should use for example case to classify this strings?
}
如果你需要更多的东西或例子,请告诉我。提前谢谢!
假设您已经定义了字符串的RDD和分类器:
val rdd: RDD[String] =
???
def classify(input: String): String =
???
rdd.map(input => classify(input))