如何从文件中检索特定的限制数据

时间:2017-05-25 10:57:01

标签: java file csv

我的csv文件有近300k的记录。看起来像这样

Id, Name, City
1   Alex New York
2   Alex Florida
3   John New York
...
300k Alex New York

好吧,我需要解析它并创建2个单独的文件,其中包含500个最频繁的列(名称和城市)。例如,在300k记录中,我有20k Alex(名字),1k John(名字),25k Fred(名字)并且制作单独的csv文件,其中有500个最常见的名字下降

Id, Name
1. Fred
2. Alex
3. John

与城市一样 如何做到最好?

1 个答案:

答案 0 :(得分:0)

这似乎是 Apache Spark 的工作。使用如此庞大的框架可能有点过分,但它提供了优雅且可扩展的解决方案来处理大数据(即使是相对较小的数据,如300K)。

所以这是一个解决方案:

SparkSession spark = SparkSession.builder()
                  .master("local")
                  .appName("CSV Processor")
                  .getOrCreate();
Dataset<Row> df = spark.read()
                  .option("header", "true")
                  .csv("input.csv");
df.printSchema();
Dataset<Row> grouped = df.groupBy("Name")
       .count()
       .sort(org.apache.spark.sql.functions.col("count").desc())
       .limit(500);
grouped.show();
grouped.coalesce(1)
       .write()
       .mode("overwrite")
       .option("header", "true")
       .csv("output.csv");

依赖关系:

org.apache.spark:spark-core_2.10:2.1.1
org.apache.spark:spark-sql_2.10:2.1.1

Windows陷入困境:Setting winutils.exe