У меня есть два кадра данных в Pyspark, которые сливаются около двух дней.Первый - около 6 000 000 элементов x 2600 строк, а второй - около 30 элементов x 2600 строк.Я подозреваю, что так много времени занимает фактическая подготовка к слиянию до слияния.Вот мой код:
from pyspark.sql import SQLContext
import pyspark
from pyspark.sql.functions import col, split, create_map, lit
from pyspark.ml import Pipeline
from pyspark.ml.classification import RandomForestClassifier
from pyspark.ml.feature import IndexToString, StringIndexer, VectorIndexer
from pyspark.ml.evaluation import MulticlassClassificationEvaluator
sql_c = SQLContext(sc)
df = sql_c.read.option("maxColumns", 10000000).option("header", "true").options(samplingRatio=0.01).option("inferSchema", "true").csv('join_rows_no_prepended_new_line.csv')
df2 = sql_c.read.option("maxColumns", 10000000).option("header", "true").options(samplingRatio=0.01).option("inferSchema", "true").option("delimiter", "\t").csv('metadata_merged.txt')
#create a new column with a SampleID that matches the SampleID columns from the metadata df.
df = df.withColumn('#SampleID', split(df['# Gene Family'], '\_')[0])
df = df.drop("# Gene Family")
feature_cols = df.columns
df = df.join(df2, col("df.SampleID Gene Family")==col("df2.#SampleID"), how='inner')
Последняя строка - это однопоточная, работающая в течение двух дней.Есть ли лучший способ сделать это в Pyspark с точки зрения подготовки данных или что-то еще?
Спасибо.