Spark中schema_of_json要求的foldable column(可折叠列)的含义是什么?
Spark SQL 中 foldable column(可折叠列)的定义
在Spark SQL语境下,可折叠列指的是可以在查询逻辑计划优化阶段就被直接计算为固定常量值的列表达式,无需等到作业运行阶段在Executor侧逐行计算。
可折叠列的判定条件
满足以下所有特征的列表达式才会被Spark识别为可折叠列:
- 表达式的所有输入都是常量值,没有引用任何数据源表的字段
- 不包含随机函数、非确定性UDF、动态变量等运行时才能确定输出值的逻辑
schema_of_json 要求可折叠列的原因
schema_of_json 函数需要在查询编译阶段就完成JSON结构的推断,才能生成正确的后续执行计划,所以要求传入的JSON样本必须是编译阶段就能确定具体值的可折叠列。
合法使用示例
SELECT schema_of_json('{"id": 1, "name": "John"}');
直接传入常量JSON字符串,属于可折叠列,可以正常执行。
非法使用示例
SELECT schema_of_json(json_data) FROM user_json_table;
引用表中的json_data列,每行值都不同,不是可折叠列,执行会报错。
内容的提问来源于stack exchange,提问作者werner
相关产品推荐
相关产品推荐

