You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Python绑定将DataFusion DataFrame持久化到内存?

将DataFusion DataFrame持久化到内存的方法

DataFusion注册CSV表时默认是懒加载模式,不会主动把数据加载到内存。要实现内存持久化,可以通过以下两种常用方法:

方法一:直接创建内存表(推荐)

利用create_memory_table方法,触发查询并将结果直接存储为内存表,后续操作无需再访问原始CSV:

import datafusion

ctx = datafusion.SessionContext()
# 注册CSV表(懒加载,未加载数据到内存)
ctx.register_csv("x", path)

# 从已注册的表生成DataFrame
df = ctx.table("x")

# 将数据持久化到内存,注册为新表"x_in_memory"
ctx.create_memory_table("x_in_memory", df)

# 后续使用内存表查询,数据直接从内存读取
result = ctx.sql("SELECT COUNT(*) FROM x_in_memory")
print(result.collect())

方法二:通过Pandas中转(适合需Python层处理数据的场景)

先将数据加载到Pandas DataFrame(已在内存),再注册为DataFusion内存表:

import datafusion
import pandas as pd

ctx = datafusion.SessionContext()
ctx.register_csv("x", path)

df = ctx.table("x")
# 将数据加载到内存中的Pandas DataFrame
pandas_df = df.to_pandas()

# 注册为DataFusion内存表
ctx.register_dataframe("x_in_memory", pandas_df)

说明

  • create_memory_table是更高效的方式,直接在DataFusion引擎内完成内存持久化,避免Python和引擎间的数据拷贝。
  • 若数据量极大,需注意内存占用情况,避免内存溢出问题。

内容的提问来源于stack exchange,提问作者Powers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 00:30:21