Dataframe манипуляции в pyspark - PullRequest
       25

Dataframe манипуляции в pyspark

0 голосов
/ 21 марта 2019

Я должен выполнить обработку данных в 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

...