我必须在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