Я создал 2 RDD's
, как показано ниже:
rdd1 = sc.parallelize([(u'176', u'244', -0.03925566875021147), (u'28', u'244', 0.9175106515709205), (u'165', u'244', -0.3837580218245722), (u'181', u'244', 0.29145693160561503), (u'161', u'244', -0.503468718448459), (u'28', u'275', 1.1636548589189926), (u'165', u'275', -1.026158464467282), (u'181', u'275', 0.6685791983070568)])
rdd2 = sc.parallelize([(u'176', u'244'), (u'28', u'244'), (u'165', u'244'), (u'165', u'275'), (u'181', u'275'), (u'141', u'388'), (u'154', u'238')])
мой ожидаемый результат должен быть таким, как показано ниже:
[(u'176', u'244', -0.03925566875021147,1), (u'28', u'244', 0.9175106515709205,1), (u'165', u'244', -0.3837580218245722,1), (u'181', u'244', 0.29145693160561503,0), (u'161', u'244', -0.503468718448459,0), (u'28', u'275', 1.1636548589189926,0), (u'165', u'275', -1.026158464467282,1), (u'181', u'275', 0.6685791983070568,1)]
я хочу присоединиться к двум числам добавить статус присоединения, как 1или 0.
в rdd1 1-й кортеж равен (u'176', u'244', -0.03925566875021147)
, а rdd2 содержит (u'176', u'244')
, первые два элемента rdd1, rdd2 совпадают, тогда мой ожидаемый результат равен (u'176', u'244', -0.03925566875021147,1)
.
то же самое в случае Rdd1: (u'181', u'275', 0.6685791983070568)
и Rdd2: (u'181', u'275')
вывод будет (u'181', u'275', 0.6685791983070568,1)
.
, в противном случае rdd1 содержит (u'181', u'244', 0.29145693160561503)
, но rdd2 не содержит никакого кортежакак (u'181', u'244')
, поэтому ожидаемый результат будет (u'181', u'244', 0.29145693160561503,0)
Я добился этого с помощью создания фреймов данных, но я не хочу использовать соединение фреймов данных. Пожалуйста, помогите об этом, как достичь с помощью rdds.