写入配置单元表后,停止自动取消持久化数据帧

时间:2019-06-20 13:43:49

标签: apache-spark dataframe hive pyspark persist

即使在写入配置单元表后,我也要保留数据框。

<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变得不再持久。 如果是,是否会出现这种现象,那么我们该如何解决呢?

1 个答案:

答案 0 :(得分:0)

您可以在将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