Как получить доступ к отдельному элементу в кортеже на RDD в pyspark?

Допустим, у меня есть RDD вроде

[(u'Some1', (u'ABC', 9989)), (u'Some2', (u'XYZ', 235)), (u'Some3', (u'BBB', 5379)), (u'Some4', (u'ABC', 5379))]

Я использую map для получения одного кортежа за раз, но как я могу получить доступ к отдельному элементу кортежа, например, чтобы увидеть, содержит ли кортеж какой-либо символ. На самом деле я хочу отфильтровать те, которые содержат какой-то символ. Здесь кортежи, содержащие ABC

Я пытался сделать что-то подобное, но это не помогает

def foo(line):
     if(line[1]=="ABC"):
          return (line)


new_data = data.map(foo)

Я новичок в искре и питоне, пожалуйста, помогите!


person Alibh    schedule 14.04.2016    source источник


Ответы (1)


СДР можно фильтровать напрямую. Ниже вы найдете все записи, содержащие «ABC» в 0-й позиции 2-го элемента кортежа.

new_data = data.filter(lambda x: x[1][0] == "ABC")
person David    schedule 14.04.2016