Process a large csv file with parallel processing

A csv file stores a large amount orders data.

OrderID,Client,SellerID,Amount,OrderDate

1,SPLI,219,9173,01/17/2022

2,HU,110,6192,10/01/2020

3,SPL,173,5659,04/23/2020

4,OFS,7,3811,02/05/2023

5,ARO,146,3752,08/27/2021

6,SRR,449,10752,05/27/2022

7,SJCH,326,11719,01/18/2022

8,JDR,3,11828,12/09/2021

Use Java to process this file: Find orders whose amounts are between 3,000 and 5,000, group them by customers, and sum order amounts and count orders.

Client amt cnt
ARO 11948382 2972
BDR 11720848 2933
BON 11864952 2960
BSF 11947734 2980
CHO 11806401 2968
CHOP 11511201 2877
D 11491452 2876
DSG 11672114 2910
DSGC 11656479 2918

Write the following SPL statement:

=file("d:/OrdersBig.csv").cursor@mtc(;8).select(Amount>=3000 && Amount<5000).groups(Client;sum(Amount):amt,count(1):cnt)

cursor() function parses a large file that cannot fit into the memory; by default, it performs the serial computation. @m option enables multithreaded data retrieval; 8 is the number of parallel threads; @t option enables importing the first line as column titles; and @c option enables using comma as the separator.

Read How to Call a SPL Script in Java to find how to integrate SPL into a Java application.
Source:
https://stackoverflow.com/questions/70586145/how-to-read-a-specific-column-of-a-row-from-a-csv-file-in-java