Фильтрация RDD Исходя из условия и извлечения согласованных данных в Spark python

У меня есть такие данные,

cl_id cn_id cn_value 10004, 77173296 ,390.0 10004, 77173299 ,376.0 10004, 77173300 ,0.0 20005, 77173296 ,0.0 20005, 77173299 ,6.0 2005, 77438800 ,2.0 

Идентификаторы Cl_id: 10004, 20005

Фильтр по 10004

 10004, 77173296 ,390.0 10004, 77173299 ,376.0 

Фильтр по 20005

 20005, 77173296 ,0.0 20005, 77173299 ,6.0 

Теперь я хочу вернуть RDD,

 10004,cn_id,x1(77173296.value,77173300.value) ==> 10004,77173296,390.0,376.0 20005,cn_id,x1(77173296.value,77173300.value) ==> 20005,77173296,0.0,6.0 

И я хочу выполнить некоторую операцию над этим return_RDD :

  def cal_for(rdd_list): #list.map(position1).filter(cn_id for this formula)-> calculate that formula -> store in a separate RDD -> Return that RDD rdd_list = rdd_list.map(lambda line:line.split(',')) new_list = rdd_list.map(lambda x: (x[0]+', '+x[1],float(x[2]))) new_list = rdd_list.filter(lambda x: x[1] == '77173296' && x[1] == '77173299') ## then get the RDD containing respective cn_values for cn_id 77173296 & cn_id 77173299 ## and apply the following formula whre a=77173296.value b=77173299.value for cl_id 1004 try: # want to process RDD with this Formula return ((float(a)/float(a+b))*100) except ZeroDivisionError: return 0 #return or save cal_RDD 

  • Разделить RDD на кортежи длины n
  • Уменьшите пару «ключ-значение» в пару из списка ключей с помощью Apache Spark
  • Объясните совокупную функциональность в Spark
  • Какая функция в искре используется для объединения двух RDD по ключам
  • Объект PipelinedRDD не имеет атрибута 'toDF' в PySpark
  • PySpark DataFrames - способ перечислить без преобразования в Pandas?
  • Ошибка при запуске Spark: Исполнитель проиграл
  • Spark - самый быстрый способ создания RDD массивов numpy
  • One Solution collect form web for “Фильтрация RDD Исходя из условия и извлечения согласованных данных в Spark python”

    Вместо того, чтобы дважды фильтровать RDD, модифицировать и рекомбинировать полученные RDD, просто группировать по id, а затем сопоставлять значения для внесения необходимых изменений. Если вы хотите еще больше ограничить результаты на основе некоторых критериев, тогда выполните фильтрацию при отображении.

    Я не могу дать вам более точный ответ:

    a) Не похоже, что вы действительно пытались это реализовать, и б) я не совсем уверен, чего вы хотите.

    Python - лучший язык программирования в мире.