Flight SQL 只返一个BE上的数据

Viewed 48

Doris 3.0,3个BE,数据表使用了分区,数据比较均匀,使用Flight SQL数据查询只返回了1/3的数据量。同样的SQL使用MySQL客户端连接doris,查询可以看到全部数据,是FE或BE配置的配置问题?还是其他,请大佬帮忙看下。

代码如下:

import adbc_driver_manager
import adbc_driver_flightsql.dbapi as flight_sql

with flight_sql.connect(uri="grpc://192.168.25.87:9070", db_kwargs={
            adbc_driver_manager.DatabaseOptions.USERNAME.value: "xxxx",
            adbc_driver_manager.DatabaseOptions.PASSWORD.value: "xxxx"
        }) as conn:
    cursor = conn.cursor()
    
    cursor.execute("use xxx;")
    sql = "select * from table_name;"
    
    cursor.execute(sql)
    dd = cursor.fetch_df()
    print(dd)

此外,执行代码:

    partitions, schema = cursor.adbc_execute_partitions(sql)
    print(partitions)

返回的partitions,里面也总是只包含一个BE节点信息。

4 Answers

这里的只返回了1/3的数据量,是具体准确的吗?你的表如果是三副本的话,即便是某个BE,也是包含了所有的数据量的,另外单副本的,这里的数据也不一定是准确的三分之一。
辛苦提供下你这些代码的打印结果

上面代码print的结果

版本切换到Doris-2.1.7,所有配置都相同,就可以返回全量数据了。@徐振超@SelectDB

在3.0.x 上设置 ENABLE_PARALLEL_RESULT_SINK 为false,试试