У мене є великий набір даних, який мені потрібно розділити на групи за певними параметрами. Я хочу, щоб робота пройшла максимально ефективно. Я можу передбачити два способи цього
Варіант 1 - Створіть карту з оригінального RDD та фільтра
def customMapper(record):
if passesSomeTest(record):
return (1,record)
else:
return (0,record)
mappedRdd = rddIn.map(lambda x: customMapper(x))
rdd0 = mappedRdd.filter(lambda x: x[0]==0).cache()
rdd1 = mappedRdd.filter(lambda x: x[1]==1).cache()
Варіант 2 - Фільтруйте оригінальний RDD безпосередньо
def customFilter(record):
return passesSomeTest(record)
rdd0 = rddIn.filter(lambda x: customFilter(x)==False).cache()
rdd1 = rddIn.filter(customFilter).cache()
Метод кулака повинен повторювати всі записи оригінального набору даних 3 рази, де другий повинен це зробити лише двічі, за звичайних обставин, однак, іскра робить деякі поза кадром побудови графіків, так що я міг уявити, що вони ефективно зроблено таким же чином. Мої запитання: а.) Чи є один метод більш ефективним, ніж інший, чи побудова іскрового графіка робить їх еквівалентом b.) Чи можливо це розщеплення за один прохід