Apache Spark中asc排序不符合预期问题咨询
排序不符合预期的原因分析
你遇到的问题,大概率是以下几种情况导致的:
- count列数据类型非数值型:如果
count列是字符串类型,Spark会按字典序排序,而非数值大小。比如字符串"12"会排在"2"前面,因为字典序里"1"比"2"靠前,这就会出现你看到的不符合数值升序的结果。可以执行df.printSchema()查看列的类型确认。 - COUNTRY_NAME存在隐性差异:看似相同的国家名称,可能存在大小写(比如"Germany"和"germany")、前后空格(比如"France "和"France")或者不可见特殊字符,这些都会被Spark判定为不同的分组,12所在的行其实属于另一个独立分组,而非你以为的同一组。可以用
df.select("COUNTRY_NAME").distinct().show()排查所有不同的国家名称取值。 - 显示范围的误导:
show()默认只展示前20行,若数据集较大,你看到的12所在行可能属于另一组的开头,但这种情况概率很低,因为orderBy是全局排序,相同COUNTRY_NAME的行应该是连续的。
内容的提问来源于stack exchange,提问作者Mandroid
相关产品推荐
相关产品推荐

