Cho phép nói rằng tôi có tập dữ liệu với khoảng 2,1 tỷ bản ghi.pyspark Window.partitionBy vs groupBy
Đó là tập dữ liệu có thông tin khách hàng và tôi muốn biết số lần họ đã làm điều gì đó. Vì vậy, tôi nên nhóm trên ID và tổng một cột (Nó có giá trị 0 và 1 trong đó 1 chỉ ra một hành động).
Bây giờ, tôi có thể sử dụng đơn giản groupBy
và agg(sum)
, nhưng theo hiểu biết của tôi thì điều này không thực sự hiệu quả. groupBy
sẽ di chuyển xung quanh rất nhiều dữ liệu giữa các phân vùng.
Ngoài ra, tôi cũng có thể sử dụng chức năng Cửa sổ với mệnh đề partitionBy
và sau đó tổng hợp dữ liệu. Một trong những bất lợi là sau đó tôi sẽ phải áp dụng một bộ lọc bổ sung gây ra nó giữ tất cả các dữ liệu. Và tôi muốn một bản ghi cho mỗi ID.
Nhưng tôi không thấy cách cửa sổ này xử lý dữ liệu. Là nó tốt hơn so với nhóm này và tổng hợp. Hay nó giống nhau?