Scala-CSV文件渲染单元格,其值为html格式

时间:2018-04-09 17:26:25

标签: scala spark-dataframe scala-collections scalatest

我无法格式化那些值为html格式的单元格。我只需要在以“Answer”开头的选定列上应用clean函数。该列(以“Answers”开头)具有html格式的值。怎么格式化?我正在使用正则表达式,但它没有帮助。我在评论部分显示了输入格式。有一些列有html值。我需要更改。

import org.apache.spark.sql.DataFrame
    import org.apache.spark.sql.Column
    import org.apache.spark.sql.functions._
    import org.apache.spark.sql.Column
import org.apache.spark.sql.functions._


object AppRunner extends App with Serializable
{

  System.setProperty("hadoop.home.dir", "C:\\hadoop-common-2.2.0-bin-master")

  val input = "input//ResultsFile1.csv"
  val output = "file:///G:/csvfile/output.csv"


  val spark = org.apache.spark.sql.SparkSession.builder
    .master("local")
    .appName("Spark CSV Reader")
    .getOrCreate;

  var df = spark.read.format("csv").option("header", "true").load(input)
  //df.show()
  var count = 0

  def cleanHtml(df: DataFrame): DataFrame = {
//    val interestColumns = df.columns
//    for(targetCol <- interestColumns) {
//      if (targetCol.contains("Answer"))
//        df.withColumn(targetCol,clean(col(targetCol)))
//    }
   val dfi = df.columns.foldLeft(df){
      (memoDf, colName) =>
        if (colName.contains("Answer"))
        {
          count = count + 1
          memoDf.withColumn(colName,clean(col(colName)))
        }
        else
        {
          memoDf
        }
    }
    dfi
  }


  def clean(col:Column):Column = {
   // if(col.name contains "Answer")
    val reg = """<(?!\/?a(?=>|\s.*>))\/?.*?>"""
   // val reg ="""<(?:[^>=]|='[^']*'|="[^"]*"|=[^'"][^\s>]*)*>"""
    regexp_replace(col, reg,"")
  }

    //val test = df
    // println(cleanHtml(df))
  df = cleanHtml(df)
  println(count)
  df.show()
  df.write
    .option("header","true")
    .csv(output)
}

具有html值的每个单元格的预期输出(如注释部分):

1)HuskySort - &gt;需要一个非常快速的排序,数据往往被排序

平均:

  • 赫斯基n * ln(n)= 6908,但排序n = 1000

  • Robin 1/2 * nlogn = 1500

  • INFO 2n * ln(n)= 13816

  • 特朗普2n * ln(n)= 13816

    2)RobinSort - &gt;几个关键,需要一个稳定的排序

3)INFO排序 - &gt;没有添加内存,需要到位排序

4)HuskySort - &gt;最糟糕的时间复杂性很好

最差:

  • 赫斯基n * log(n)= 3000

  • Robin n ^ 1.5 = 31622

  • INFO n ^ 2 = 1000000

  • 特朗普n ^ 2 = 1000000

5)RobinSort 9 x平均值+ 1 x最差:

  • 赫斯基:n logn + 9n ln(n)= 65170

  • Robin:4.5n * log n + n ^ 1.5 = 45123

0 个答案:

没有答案