Как получить конкретную запись из RDD с помощью Python
Я работаю в RDD с помощью Python. Я хочу найти конкретную запись из этого RDD
(8, 23, 4.0)
(50, 21, 3.0)
(5, 48, 3.0)
(5, 85, 3.0)
(40, 17, 3.0)
(3, 62, 3.0)
(24, 92, 3.0)
(48, 24, 3.0)
(48, 73, 3.0)
(34, 48, 3.0)
(50, 14, 3.0)
(1, 78, 3.0)
(7, 8, 3.0)
(10, 87, 3.0)
(14, 82, 3.0)
Например: я хочу найти 3-е значение, когда 1st is 3
а также 2nd is 62
так что должно вернуться 3.0
, Кортеж есть (3,62,3.0)
Шестой сверху в СДР
Я не знаю, как правильно использовать терминологию, так как я новичок в Spark и Python. Я не понимаю, как использовать фильтр или функцию карты или какую использовать.
2 ответа
Я хочу найти 3-е значение, когда 1-е - 3, а 2-е - 62
Вы дали свои точные требования, и вы, кажется, знаете о функциях map и filter, поэтому остальное - только понимание обычных функций распаковки кортежей Python и лямбда-функций.
reduced_rdd = rdd.filter(lambda x: x[0] == 3 and x[1] == 62)\
.map(lambda x: x[2])
Это вернет все значения, где первое значение равно 3, а второе 62:
records = [(8, 23, 4.0)
(50, 21, 3.0)
(5, 48, 3.0)
(5, 85, 3.0)
(40, 17, 3.0)
(3, 62, 3.0)
(24, 92, 3.0)
(48, 24, 3.0)
(48, 73, 3.0)
(34, 48, 3.0)
(50, 14, 3.0)
(1, 78, 3.0)
(7, 8, 3.0)
(10, 87, 3.0)
(14, 82, 3.0)]
rdd = sc.parallelize(records)
rdd.filter(lambda x: x[0] == 3 and x[1] == 63)
rdd.map( lambda x: (x[2],) )
В filter()
Вы можете установить, какие записи вы хотели бы сохранить. В map()
Вы можете изменить то, что будет содержать запись.