如何在排序后仅从数据集中选择特定列

时间:2019-02-09 10:05:41

标签: apache-spark

我有下表:

DEST_COUNTRY_NAME   ORIGIN_COUNTRY_NAME count
United States       Romania             15
United States       Croatia             1
United States       Ireland             344
Egypt               United States       15  

表表示为数据集。

scala> dataDS
res187: org.apache.spark.sql.Dataset[FlightData] = [DEST_COUNTRY_NAME: string, ORIGIN_COUNTRY_NAME: string ... 1 more field]

我想根据count列对表格进行排序,并且只想查看count列。我已经完成了,但是我分两个步骤完成了

1-我首先进行排序以获得DS-dataDS.sort(col("count").desc) 2-然后在该DS-上选择(dataDS.sort(col("count").desc)).select(col("count")).show();

以上内容对我来说就像是嵌入式sql查询。但是,在sql中,我可以执行相同的查询而无需使用嵌入式查询 select * from flight_data_2015 ORDER BY count ASC

有没有一种更好的方式可以对我进行排序和选择而不创建新的Dataset

1 个答案:

答案 0 :(得分:0)

没有错

(dataDS.sort(col("count").desc)).select(col("count")).show();

这是正确的做法,除了对排序的内在问题外,对性能没有负面影响。

自由使用它,不再担心。