解析JSON数据执行后所有BE节点全部挂了

为了更快的定位您的问题,请提供以下信息,谢谢
【详述】解析JSON数据执行完BE全部挂了
【背景】执行sql查询
【业务影响】
【是否存算分离】存算一体
【StarRocks版本】3.4.1
【集群规模】1个fe+=3个be(fe与be混部)
【机器信息】CPU虚拟核/内存/网卡,fe和be混部的是32核64G,其他2个be是16核32G
【联系方式】社区群22-涂黑 邮件:215730230@qq.com
【附件】
相关信息存在附近be.out (24.4 KB) be-info.txt (306.4 KB) dump_file (22.6 KB) jsonquery.sql (733 字节)

*** Aborted at 1745550300 (unix time) try "date -d @1745550300" if you are using GNU date ***
PC: @          0x61a3527 starrocks::ColumnReader::_new_json_iterator(starrocks::ColumnAccessPath*, starrocks::TabletColumn const*)
*** SIGSEGV (@0x10) received by PID 554725 (TID 0x72eef3e006c0) from PID 16; stack trace: ***
    @     0x72ef9c8a1ed3 (/usr/lib/x86_64-linux-gnu/libc.so.6+0xa1ed2)
    @          0xd4ee809 google::(anonymous namespace)::FailureSignalHandler(int, siginfo_t*, void*)
    @     0x72ef9c845330 (/usr/lib/x86_64-linux-gnu/libc.so.6+0x4532f)
    @          0x61a3527 starrocks::ColumnReader::_new_json_iterator(starrocks::ColumnAccessPath*, starrocks::TabletColumn const*)
    @          0x61a40ed starrocks::ColumnReader::new_iterator(starrocks::ColumnAccessPath*, starrocks::TabletColumn const*)
    @          0x6190bfb starrocks::Segment::new_column_iterator_or_default(starrocks::TabletColumn const&, starrocks::ColumnAccessPath*)
    @          0x7aae478 starrocks::SegmentIterator::_init_column_iterator_by_cid(unsigned int, int, bool)
    @          0x7acac77 starrocks::Status starrocks::SegmentIterator::_init_column_iterators<true>(starrocks::Schema const&)
    @          0x7ab5022 starrocks::SegmentIterator::_init()
    @          0x7ab59a3 starrocks::SegmentIterator::do_get_next(starrocks::Chunk*)
    @          0x6371686 starrocks::ProjectionIterator::do_get_next(starrocks::Chunk*)
    @          0x61846a8 starrocks::SegmentIteratorWrapper::do_get_next(starrocks::Chunk*)
    @          0x795c483 starrocks::TimedChunkIterator::do_get_next(starrocks::Chunk*)
    @          0x768e23f starrocks::TabletReader::do_get_next(starrocks::Chunk*)
    @          0x898e918 starrocks::pipeline::OlapChunkSource::_read_chunk_from_storage(starrocks::RuntimeState*, starrocks::Chunk*)
    @          0x898f0c9 starrocks::pipeline::OlapChunkSource::_read_chunk(starrocks::RuntimeState*, std::shared_ptr<starrocks::Chunk>*)
    @          0x87730af starrocks::pipeline::ChunkSource::buffer_next_batch_chunks_blocking(starrocks::RuntimeState*, unsigned long, starrocks::workgroup::WorkGroup const*)
    @          0x5aa0e2f auto starrocks::pipeline::ScanOperator::_trigger_next_scan(starrocks::RuntimeState*, int)::{lambda(auto:1&)#1}::operator()<starrocks::workgroup::YieldContext>(starrocks::workgroup::YieldContext&) const [clone .constprop.0]
    @          0x5a62536 starrocks::workgroup::ScanExecutor::worker_thread()
    @          0x9470bd3 starrocks::ThreadPool::dispatch_thread()
    @          0x9468219 starrocks::Thread::supervise_thread(void*)
    @     0x72ef9c89caa4 (/usr/lib/x86_64-linux-gnu/libc.so.6+0x9caa3)
    @     0x72ef9c929c3c (/usr/lib/x86_64-linux-gnu/libc.so.6+0x129c3b)

但是我能查出数据 查完之后be就挂了

start time: Fri Apr 25 10:29:18 AM CST 2025, server uptime:  10:29:18 up 27 days, 22:31,  3 users,  load average: 0.04, 0.07, 0.02
3.4.1 RELEASE (build 2f78e09)
query_id:664b881f-217d-11f0-92e2-00163e219c1f, fragment_instance:664b881f-217d-11f0-92e2-00163e219c21

在fe.log或者audit.log里找一下这个query长什么样.

2025-04-25 10:31:32.020+08:00 [query] |Timestamp=1745548291934|Client=116.31.239.239:9282|User=root|AuthorizedUser=‘root’@’%’|ResourceGroup=default_wg|Catalog=default_catalog|Db=amzdata|State=EOF|ErrorCode=|Time=86|ScanBytes=140694829|ScanRows=10651722|ReturnRows=501|CpuCostNs=238616694|MemCostBytes=102317392|StmtId=160931|QueryId=664b881f-217d-11f0-92e2-00163e219c1f|IsQuery=true|feIp=SR1|Stmt=/* ApplicationName=DataGrip 2024.1 */ SELECT id, NULLIF(json_query(document, ‘$.rpAccountName’), ‘’) AS rpAccountName, CAST(NULLIF(json_query(document, ‘$.rpAccountId.$numberLong’), ‘’) AS INT) AS rpAccountId, NULLIF(json_query(document, ‘$.rpNo’), ‘’) AS rpNo, NULLIF(json_query(childAsin.value, ‘$.childAsin’), ‘’) AS child_asin, NULLIF(json_query(childAsin.value, ‘$.parentAsin’), ‘’) AS parent_asin, NULLIF(json_query(childAsin.value, ‘$.salesByAsin.orderedProductSales.amount’), ‘’) AS sales_amount, NULLIF(json_query(childAsin.value, ‘$.trafficByAsin.sessions’), ‘’) AS sessions FROM amzdata.sp_report_doc, json_each(document->’$.salesAndTrafficByAsin’) AS childAsin where rpType= “GET_SALES_AND_TRAFFIC_REPORT”|Digest=|PlanCpuCost=5.175340772691716E9|PlanMemCost=0.0|PendingTimeMs=0|Warehouse=default_warehouse|IsForwardToLeader=false

SELECT
id,
json_query(document, ‘$.rpAccountName’) AS rpAccountName,
cast(json_query(document, ‘$.rpAccountId.$numberLong’) as int ) AS rpAccountId,
json_query(document, ‘$.rpNo’) AS rpNo,
– 解析 value 字段中的嵌套 JSON
json_query(childAsin.value, ‘$.childAsin’) AS child_asin,
json_query(childAsin.value, ‘$.parentAsin’) AS parent_asin,
json_query(childAsin.value, ‘$.salesByAsin.orderedProductSales.amount’) AS sales_amount,
json_query(childAsin.value, ‘$.trafficByAsin.sessions’) AS sessions
FROM
amzdata.sp_report_doc,
json_each(document->’$.salesAndTrafficByAsin’) AS childAsin
where rpType= “GET_SALES_AND_TRAFFIC_REPORT”
limit 3; 我这个加了限制 查询之后be也是挂了 :sob:

这个query是稳定复现的吗?

对的每次执行都挂了 但是我新建了物化视图create MATERIALIZED view if not exists ods.wuhua_test001
(
id
,reportSpecification
,rpAccountId
,rpAccountName
,rpEndDate
,rpNo
,rpResultId
,rpStartDate
,rpTplId
,rpType
,rpTypeCat
,value
)
REFRESH ASYNC EVERY (INTERVAL 120 MINUTE) – 自动刷新
AS SELECT
id
,reportSpecification
,rpAccountId
,rpAccountName
,rpEndDate
,rpNo
,rpResultId
,rpStartDate
,rpTplId
,rpType
,rpTypeCat
,value
FROM
amzdata.sp_report_doc,
json_each(document->’$.salesAndTrafficByAsin’)
where rpType= “GET_SALES_AND_TRAFFIC_REPORT”
;这样再去使用select
id
,json_query(value,’$.childAsin’)
from
ods.wuhua_test001;这个去解析json be节点就不会挂了 2个语法实现的是一样的

原表的schema和示例数据给一下, 我们可以尝试重现看看

__1.csv (3.3 MB) 建表语法.sql (5.0 KB) 这个是建表语法和部分数据示例

1赞

示例数据有点问题, 那个json有点复杂, 导出的格式与,分隔符冲突, 可以考虑用别的分隔符导出一些示例数据, 或者导出部分数据写成parque格式.

amzdata_sp_report_doc.json (3.4 MB) amzdata_sp_report_doc.sql (2.9 MB)
我导出了这2个 你看下能不能用哈

数据导入进去了, 但没复现出来 :joy:

这么奇怪 我执行那个limit3 也会be挂掉SELECT
id,
json_query(document, ‘$.rpAccountName’) AS rpAccountName,
cast(json_query(document, ‘$.rpAccountId.$numberLong’) as int ) AS rpAccountId,
json_query(document, ‘$.rpNo’) AS rpNo,
– 解析 value 字段中的嵌套 JSON
json_query(childAsin.value, ‘$.childAsin’) AS child_asin,
json_query(childAsin.value, ‘$.parentAsin’) AS parent_asin,
json_query(childAsin.value, ‘$.salesByAsin.orderedProductSales.amount’) AS sales_amount,
json_query(childAsin.value, ‘$.trafficByAsin.sessions’) AS sessions
FROM
amzdata.sp_report_doc,
json_each(document->’$.salesAndTrafficByAsin’) AS childAsin
where rpType= “GET_SALES_AND_TRAFFIC_REPORT”
limit 3 目前我是做了一层转换暂时可以用 :joy: