Spark Scala:如何删除每行(包括标题)周围的双引号?

时间:2019-04-24 09:12:13

标签: scala apache-spark

我从Spark入手,需要解析的文件具有以下形状:

"VARIABLE;MOD;LIBMOD"
"CDEXE;6;PBS between 25000 and 50000 euros"

如何使用其中的数据集[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]

1 个答案:

答案 0 :(得分:2)

您可以先将其阅读为文本,以删除多余的引号

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]