У меня есть два rdd, у одного rdd есть только один столбец, у которого есть два столбца, чтобы присоединиться к двум RDD на клавишах. У меня есть фиктивное значение, которое равно 0, есть ли другой эффективный способ сделать это, используя join?Присоединиться к двум RDD в искры
val lines = sc.textFile("ml-100k/u.data")
val movienamesfile = sc.textFile("Cml-100k/u.item")
val moviesid = lines.map(x => x.split("\t")).map(x => (x(1),0))
val test = moviesid.map(x => x._1)
val movienames = movienamesfile.map(x => x.split("\\|")).map(x => (x(0),x(1)))
val shit = movienames.join(moviesid).distinct()
Edit:
Позвольте мне преобразовать этот вопрос в SQL. Скажем, например, у меня есть table1 (moveid)
и table2 (movieid,moviename)
. В SQL мы пишем что-то вроде:
select moviename, movieid, count(1)
from table2 inner join table table1 on table1.movieid=table2.moveid
group by ....
здесь в SQL table1
имеет только один столбец, где, как table2
имеет две колонки по-прежнему join
работает, так же, как в Спарк могут присоединиться по клавишам как из РДД-х.
Ваш вопрос не очень ясен. Можете ли вы переформулировать? – eliasah
Вы пытаетесь достичь фильтрации, как внутреннее соединение? – mehmetminanc
да то же самое, что и внутренний набор данных соединения = 123, starwars; dataset2 = 123; dataset1.join (datset2) терпит неудачу, потому что в dataset2 отсутствует один элемент, поэтому мне нужно добавить значение по умолчанию в dataset2 = 123,0; то соединение работает, есть ли способ, если в наборе данных2 осталось меньше элементов, все еще работает соединение? –