Я должен выполнить обработку данных в pyspark и ищу наилучшую возможную производительность.
У меня есть таблица с около 5000 столбцов, и мне нужно манипулировать данными
columnlist содержит список столбцов, которые необходимо обработать, а sql_df - это фрейм данных, в котором 5000 столбцов - это 10K строк
for col_name in columnlist:
colname_new = col_name + "_new"
sql_df = sql_df.withColumn(col_name, lit(10000))
sql_df = sql_df.drop(col_name)
sql_df = sql_df.withColumnRenamed(col_name + "_new", col_name)
вышесказанное занимает более 3 часов, что совершенно неприемлемо
Есть ли лучший способ для этого?
Я также попробовал ниже, который дал ошибку
sql_df = spark.sql("Select * from filtered_table")
def f(col_name):
global sql_df
colname_new = col_name + "_new"
sql_df = sql_df.withColumn(col_name, lit('10000'))
sql_df = sql_df.drop(col_name)
sql_df = sql_df.withColumnRenamed(col_name + "_new", col_name)
collist = sc.parallelize(filtered_df.columns).foreach(f)
Заранее спасибо
Maxx