如何在Ibis Memtable中设置Pandas/DuckDB后端及指定计算引擎
Ibis后端选择问题解答
首先看你编写的函数(注意原函数里有个笔误,to.to_arrow()应该改为t.to_arrow()):
import ibis def my_function(df): t = ibis.memtable(df) t = t.mutate(ibis._['a'] + 1) return t.to_arrow()
问题解答
传入Pandas DataFrame时,
t使用哪个后端?
当你通过ibis.memtable(df)传入Pandas DataFrame时,默认会使用DuckDB后端执行计算。Ibis的memtable接口默认依赖DuckDB作为内存计算的后端,不管输入数据格式是Pandas还是其他类型。如何强制使用Pandas后端?
需要显式创建Pandas后端的连接,再将输入的DataFrame注册为该连接下的表,后续操作就会基于Pandas后端执行:
import ibis def my_function(df): # 初始化Pandas后端连接 con = ibis.pandas.connect() # 将DataFrame注册为Pandas连接下的表 t = con.create_table("temp_table", df) # 执行计算 t = t.mutate(a_plus_1=ibis._['a'] + 1) return t.to_arrow()
- 如何强制使用DuckDB后端?
虽然默认就是DuckDB后端,但可以显式创建DuckDB内存连接来确保行为一致,避免环境配置影响:
import ibis def my_function(df): # 初始化DuckDB内存连接 con = ibis.duckdb.connect() # 将DataFrame注册为DuckDB连接下的内存表 t = con.create_table("temp_table", df) # 执行计算 t = t.mutate(a_plus_1=ibis._['a'] + 1) return t.to_arrow()
内容的提问来源于stack exchange,提问作者ignoring_gravity
相关产品推荐
相关产品推荐

