Clasifique cada instancia de un RDD | Apache Spark Scala
Estoy comenzando a trabajar con RDD y tengo algunas dudas. En mi caso, tengo un RDD y quiero clasificar sus datos. Mi RDD contiene lo siguiente:
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))
Como puedes ver, el RDD contiene dos cadenas, la primera empieza con “data” y la segunda empieza con “rbd”. Lo que quiero hacer es clasificar cada instancia de este RDD como se puede ver aquí:
Si la instancia contiene bd_users y BD_classified -> users
bd_experts y BD_exp -> experts
BD_test -> tests
La salida sería algo así para este RDD:
- Usuarios
- Usuarios
- Expertos
- Test
Para hacer esto, me gustaría usar un mapa que llame a una función para cada instancia en este RDD, pero no sé cómo orientarlo:
val rdd_groups = rdd_1.map(x=>x(0).toString).map(x => getGroups(x))
def getGroups(input: String): (String) = {
// aquí debería usar, por ejemplo, caso para clasificar estas cadenas
}
davy.ai
Puedes usar la expresión
match
para clasificar las cadenas en tu RDD. La expresiónmatch
es similar a la declaraciónswitch
en otros lenguajes. Te permite comparar un valor con un conjunto de patrones y ejecutar código basado en el patrón que coincide.Por ejemplo, podrías usar el siguiente código para clasificar las cadenas en tu RDD:
La salida de este código sería algo como esto para tu RDD: