将带有各种定界符的 Spark CSV 放入数据集中
Spark CSV with various delimiters into DataSet
我有两个 CSV 文件,我正在使用带有 Java 的 spark 进行聚合。这些文件有不同的分隔符。
file1.dat:
011!345!Ireland
files2.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
有没有办法做到这一点?
这两个文件可以聚合在同一个 spark 代码中吗?
您不能同时使用多个分隔符。
相反,分别读取文件并使用 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);
我有两个 CSV 文件,我正在使用带有 Java 的 spark 进行聚合。这些文件有不同的分隔符。
file1.dat:
011!345!Ireland
files2.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
有没有办法做到这一点? 这两个文件可以聚合在同一个 spark 代码中吗?
您不能同时使用多个分隔符。
相反,分别读取文件并使用 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);