Сейчас я работаю над проектом PySpark, в котором мне нужно выполнить соединение двух больших фреймов данных. Один фрейм данных содержит около 10 миллионов записей с короткими строками в качестве ключевых слов (2–5 слов), а другой — 30 миллионов записей с вариациями (строки из 5–10 слов), торговцами и счетчиками.
Цель состоит в том, чтобы объединить фреймы данных при условии, что ключевые слова в первом фрейме содержатся в вариантах второго фрейма данных. Однако текущий код работает более 3 часов в большом кластере EMR и до сих пор не завершен.
Конфигурация EMR
5 узлов задач: m5.16xlarge (32 ядра/256 ГБ на узел)
Главный узел: m5.8xlarge (4 ядра/64 ГБ)
spark-submit команда:
time spark-submit --master yarn --deploy-mode client --conf spark.yarn.maxAppAttempts=1 --packages org.apache.hadoop:hadoop-aws:2.7.0 --num-executors 30 --conf spark.driver.memoryOverhead=6g --conf spark.executor.memoryOverhead=6g --executor-cores 5 --executor-memory 42g --driver-memory g 42 --conf spark.yarn.executor.memoryOverhead=409 join_code.py
Вот упрощенная версия кода, который я использую:
# Code for join
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName("DataFrameJoin").getOrCreate()
# Loading dataframes
keywords_df = spark.read.parquet("keywords.parquet")
variations_df= spark.read.parquet("variations.parquet")
# Cross-joining based on keyword containment
result = keywords_df.join(variations_df,F.col(variations).contains(F.col(keyword)),how='left')
result.show()
Подробнее здесь: https://stackoverflow.com/questions/769 ... dataframes
Эффективный частичный поиск строк в больших кадрах данных pyspark. ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение