java - 将带有各种定界符的 Spark CSV 放入数据集中

标签 java csv apache-spark apache-spark-sql apache-spark-dataset

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

文件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

有没有办法做到这一点? 这两个文件可以聚合在同一个 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);

关于java - 将带有各种定界符的 Spark CSV 放入数据集中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51997607/

相关文章:

postgresql - 如何将CSV数据插入PostgreSQL数据库(远程数据库)

python - 如何在 Pyspark 中使用 Scala 类

amazon-web-services - 我是否充分利用了我的 EMR 集群?

java - MongoDB with Java - 查找文档并嵌套插入更新

java - 在同一页面上显示结果

java - 包org.sqlite与eclipse中另一个模块: sqlite. jdbc可访问的包冲突

java - 构造函数未定义问题

python - 无法使用 Python 将阿拉伯语解码的 Unicode 保存到 CSV 文件

regex - 解析每一行的Linux脚本,检查正则表达式并修改该行

scala - Spark错误: executor. CoarseGrainedExecutorBackend:收到信号术语