我有大量CSV格式的数据。随着公司从Hadoop迁移到Spark,我们从Spark的基本内容开始。
我正在尝试做的过程是1.从CSV读取记录2.向每个记录添加一个键。3.按每个键分组,因此我可以选择“最佳”记录4.用实木复合地板写出每个“最佳”记录。
我不确定性能方面的一点,是向每个记录添加一个密钥,然后遍历整个记录集。
我阅读的每个地方都告诉我避免由于性能问题而避免使用Dataset.groupByKey(),但是您还如何将记录变成键/值对,以便减少数据呢?
在RDD API中,为了获得最佳性能,可以将reduceByKey
与基于“键”进行分区的数据集结合使用。
但是对于数据框/数据集,Spark足够聪明,可以在使用Dataset.groupByKey()
时使用最佳优化。>
请参阅此dataset-groupby-behaviour了解更多详细信息