Pyspark: когда я печатаю аккумулятор, его значение равно нулю - PullRequest
0 голосов
/ 08 февраля 2019

Ниже приведен пример фрагмента кода pyspark, где я пытаюсь проверить (как проверка работоспособности), сколько заказов обрабатывается после преобразования «filter».Поэтому я пытаюсь определить аккумулятор и использовать его в качестве счетчика для получения «обработанных нет заказов».

    orders=inputpath + "/orders" # Accepting and creating  the "full input path" for input file
    counter=sc.accumulator(0) #defining accumulator

    def OrderTuples(order): #defining a function to incorporate "counter increment" for every records filtered out from filter transformation to the map transformation
        counter.add(1) 
        return (int(order.split(",")[0]),1)

     ordersFiltered = sc.textFile(orders). \
        filter(lambda order : month in order.split(",")[1]). \
        map(lambda order : OrderTuples(order)) # Calling the  function here
    print(f"NO OF ORDERS PROCESSED:{counter}") # printing the accumulator final value here

Но в качестве конечного результата я все еще получаю нулевое значение.Куда я иду не так.Я использую аккумулятор впервые.В sc.textFile (orders) по умолчанию есть 2 раздела, и я использую --num-executors 2 (кластер из 13 узлов). Оценивая помощь здесь:)

1 Ответ

0 голосов
/ 08 февраля 2019

ordersFiltered необходимо выполнить действие (например, собирать) до того, как лямбда-фильтр действительно будет оценен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...