Приносит ли многопроцессорность / пул время обработки Pyspark? - PullRequest
0 голосов
/ 18 сентября 2018

Мы пытаемся оценить, действительно ли многопроцессорная обработка действительно полезна в среде Spark, особенно с использованием Pyspark. В настоящее время эта настройка существует в одном кластере EMR главного / подчиненного узла.

При этом наш автономный скрипт отлично работает, например, за день транзакции файла. Мы хотели запустить этот же скрипт на несколько дней в PARALLEL. Таким образом, ожидается, что если для обработки данных за один день требуется 5 минут, то при параллельном выполнении данных за 2 дня обработка должна приблизительно завершиться примерно через 5-7 минут, а не через 10 минут.

Однако мы сталкиваемся с множественными проблемами, с ошибками, генерируемыми для операций с кадрами данных, такими как groupBy: -

Process Process-2:
Traceback (most recent call last):
  File "/usr/lib64/python2.7/multiprocessing/process.py", line 267, in _bootstrap
    self.run()
  File "/usr/lib64/python2.7/multiprocessing/process.py", line 114, in run
    self._target(*self._args, **self._kwargs)
  File "/home/hadoop/./script/spotify/spt_gras_matching_mp.py", line 27, in process_daily_track_file
    isrc_upc_prod_no_df = a_gras_data_df.groupBy("isrc_cd", "upc_cd").agg(max("product_no")).withColumnRenamed("max(product_no)", "product_no")
  File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/dataframe.py", line 1268, in groupBy
    jgd = self._jdf.groupBy(self._jcols(*cols))
  File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/dataframe.py", line 998, in _jcols
    return self._jseq(cols, _to_java_column)
  File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/dataframe.py", line 985, in _jseq
    return _to_seq(self.sql_ctx._sc, cols, converter)
  File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/column.py", line 66, in _to_seq
    cols = [converter(c) for c in cols]
  File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/column.py", line 48, in _to_java_column
    jcol = _create_column_from_name(col)
  File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/column.py", line 41, in _create_column_from_name
    return sc._jvm.functions.col(name)
  File "/usr/lib/spark/python/lib/py4j-0.10.6-src.zip/py4j/java_gateway.py", line 1559, in __getattr__
    raise Py4JError("{0} does not exist in the JVM".format(name))
Py4JError: functions does not exist in the JVM

Прежде чем стремиться разрешить вышеуказанные проблемы, основной вопрос, который у нас возникает, заключается в том, приносит ли параллельная обработка выгоду стороне разработчика. Это избыточная деятельность, которую мы пытаемся предпринять, что, вероятно, Spark делает для нас?

Любые предложения будут высоко оценены.

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