scala - Spark Scala:如何删除每行周围的双引号,包括标题?
问题描述
我是 Spark 的初学者,我需要解析的文件具有以下形状:
"VARIABLE;MOD;LIBMOD"
"CDEXE;6;PBS between 25000 and 50000 euros"
如何从中获取 Dataset[ValueDescriptor]?
一个 ValueDescriptor 是:
case class ValueDescriptor(variableName: String, value:String, label: String)
我只找到了如何删除列周围的引号,而不是每行周围的引号。
到目前为止,我一直在使用这样的代码:
sparkSession
.read
.option("header", "true")
.option("delimiter", ";")
.csv("file.txt")
.withColumnRenamed("VARIABLE", "variableName")
.withColumnRenamed("MOD", "value")
.withColumnRenamed("LIBMOD", "label")
.as[ValueDescriptor]
解决方案
您可以先将其作为文本阅读以删除多余的引号
val txtDF = sparkSession
.read
.textFile("file.txt")
.map(_.stripPrefix("\"").stripSuffix("\""))
然后将其加载为 CSV
sparkSession
.read
.option("header", "true")
.option("delimiter", ";")
.csv(txtDF)
.withColumnRenamed("VARIABLE", "variableName")
.withColumnRenamed("MOD", "value")
.withColumnRenamed("LIBMOD", "label")
.as[ValueDescriptor]
推荐阅读
- spring - H2 控制台在 Docker 上不起作用(远程连接('webAllowOthers')被禁用)
- html - 引导顺序元素不适用于 xl 设备
- node.js - 安装 vuex-persistedstate 后 Webpack Broken
- scala - 异步 API 的 Gatling 测试
- python - 如何使用 isin 填充 pandas 数据框中的值?
- c - 如何计算前 n 个偶数?
- sql - 在 Oracle 数据库中插入多条记录
- java - 如何将一对数字从一个数组传递到另一个数组
- verilog - 使用 `include 从外部文件导入值
- c++ - 检查路径中的所有文件大小(C++)