【问题标题】:stop auto unpersist of dataframe after writing to hive table写入配置单元表后停止自动取消数据帧
【发布时间】:2019-11-03 08:32:19
【问题描述】:

即使在写入配置单元表之后,我也想保留一个数据帧。

<change data capture code> 
df.persist(StorageLevel.MEMORY_AND_DISK)
df.count() #count is 100
df.write.mode("append").insertInto("schema.table")
df.count() #count is 0 || because it's recalculating change data capture part

这里似乎 df 在写入 hive 后变得不持久。 如果是的话,这种行为是预期的,那么我们该如何解决这个问题?

【问题讨论】:

    标签: apache-spark dataframe hive pyspark persist


    【解决方案1】:

    df转rdd后可以持久化rdd。

    存储模式以便我们可以将 rdd 转换回 df

    rdd_schema = df.schema
    df_rdd = df.rdd.persist(StorageLevel.MEMORY_AND_DISK)
    
    df.count() #count is 100
    df.write.mode("append").insertInto("schema.table")
    

    现在df已经消失了,所以我们可以使用持久化的rdd来取回df

    df_persisted = spark.createDataFrame(df_rdd, schema=rdd_schema)
    df_persisted.count() #count is 100 || This will calculate from persisted rdd
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-26
      • 2013-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-15
      相关资源
      最近更新 更多