在写入配置单元表后停止自动取消Dataframe持久性

wz3gfoph  于 2021-06-24  发布在  Hive
关注(0)|答案(1)|浏览(623)

即使在写入配置单元表之后,我也希望保持Dataframe。

<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后变得不持久。这种行为是预期的吗?如果是,那么我们如何解决这个问题?

8qgya5xd

8qgya5xd1#

在将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

相关问题