首页 > 解决方案 > 带有各种分隔符的 Spark CSV 到 DataSet

问题描述

我有两个CSV 文件,我正在使用 Spark 和 Java 进行聚合。这些文件有不同的分隔符。

文件 1.dat:

011!345!Ireland

文件2.dat:

022Ç486ÇBrazil

我使用的代码:

Dataset<Row> people = spark.read().format("csv").option("header", "false").option("delimeter", "\u00C7").option("delimeter", "!").load(logFile);

输出:

Error:Cannot resolve column name

如果我删除一个分隔符:

Dataset<Row> people = spark.read().format("csv").option("header", "false").option("delimeter", "\u00C7").load(logFile);

输出:

Sno|code|Country
null|null|null 
022|486|Brazil

有没有办法做到这一点?这两个文件可以聚合在同一个火花代码中吗?

标签: javacsvapache-sparkapache-spark-sqlapache-spark-dataset

解决方案


您不能同时使用多个分隔符。

相反,请分别阅读文件并使用union( doc ) 将它们合并在一起。例如:

Dataset<Row> people1 = spark.read()
  .option("header", "false")
  .option("delimeter", "!")
  .csv(logFile1);
Dataset<Row> people2 = spark.read()
  .option("header", "false")
  .option("delimeter", "\u00C7")
  .csv(logFile2);

Dataset<Row> people = people1.union(people2);

推荐阅读