Spark解析逻辑计划中列名+#+数字标识的含义咨询
Spark逻辑计划中“列名+#+数字”标识的含义
在Spark的逻辑计划里,DEST_COUNTRY_NAME#10、count#20L这类格式的标识是Spark内部为字段分配的唯一标识符,作用是在查询的整个生命周期里精准区分每个字段,避免同名歧义。
具体拆分来看:
- 前缀部分(比如
DEST_COUNTRY_NAME、count)是字段的业务名称或生成时的名称,方便开发者识别字段含义 #后面的数字是Spark全局递增的唯一ID,每个字段在逻辑计划的不同阶段都会被分配一个独一无二的ID,哪怕字段名称相同,ID也会不一样- 部分标识末尾的后缀(比如
count#20L里的L)是字段的数据类型缩写:L代表长整型(Long),类似的还有S表示短整型、D表示双精度浮点型、I表示整型等,用来快速标识字段的类型
举个例子,你提供的逻辑计划里,原始CSV表的count#12和聚合生成的count#20L就是两个完全不同的字段——前者是源表自带的字段,后者是聚合计算生成的新字段,Spark靠后面的ID和类型后缀来区分它们,不会在优化或执行阶段搞混。
内容的提问来源于stack exchange,提问作者stackoverflowflowflwofjlw
相关产品推荐
相关产品推荐

