PySpark如何将orderBy链式调用至read读取Parquet的操作中?
链式调用orderBy的正确写法
嘿,这个问题其实很容易解决,sqlContext.read.parquet()本身就会返回一个DataFrame对象,所以咱们直接把orderBy链式接在后面就行,这里给你几种常用的写法:
直接传入列名字符串(最简洁)
这种方式适用于简单的升序排序,直接把列名作为字符串传给orderBy:df = sqlContext.read.parquet('s3://somebucket/some_parquet_file').orderBy('some_col')使用
col()函数(支持复杂排序逻辑)
如果需要指定排序方向(比如降序),或者后续要对列做更多操作,可以先用col()函数引用列,记得要先导入这个函数:from pyspark.sql.functions import col # 升序(和第一种效果一致) df = sqlContext.read.parquet('s3://somebucket/some_parquet_file').orderBy(col('some_col')) # 降序排序 df = sqlContext.read.parquet('s3://somebucket/some_parquet_file').orderBy(col('some_col').desc())
需要注意的是,你提到的?.some_col这种写法更偏向Scala的语法(用下划线代表当前DataFrame),但在Python的Spark API里并不支持这种用法,所以咱们用上面两种方式就完全可以满足需求啦。
内容的提问来源于stack exchange,提问作者timbram
相关产品推荐
相关产品推荐

