小编use*_*220的帖子

替换 csv 文件中的新行 (\n) 字符 - spark scala

只是为了说明问题,我采用了一个测试集 csv 文件。但在实际情况下,问题必须处理的不仅仅是一个 TeraByte 数据。

我有一个 CSV 文件,其中的列用引号(“col1”)括起来。但是当数据导入完成时。一列包含换行符 (\n)。这导致我遇到很多问题,当我想将它们保存为 Hive 表时。

我的想法是用“|”替换\n字符 管火花。

到目前为止我实现了:

1. val test = sqlContext.load(
        "com.databricks.spark.csv",
        Map("path" -> "test_set.csv", "header" -> "true", "inferSchema" -> "true", "delimiter" -> "," , "quote" -> "\"", "escape" -> "\\" ,"parserLib" -> "univocity" ))#read a csv file

 2.   val dataframe = test.toDF() #convert to dataframe

  3.    dataframe.foreach(println) #print

    4. dataframe.map(row => {
        val row4 = row.getAs[String](4)
        val make = row4.replaceAll("[\r\n]", "|") 
        (make)
      }).collect().foreach(println) #replace not working for me
Run Code Online (Sandbox Code Playgroud)

样本集:

(17 , …
Run Code Online (Sandbox Code Playgroud)

replace scala newline character apache-spark

6
推荐指数
1
解决办法
2万
查看次数

模式匹配-Spark Scala RDD

我是R背景的Spark和Scala的新手,在对RDD进行了一些转换之后,我得到了RDD类型

Description: RDD[(String, Int)]
Run Code Online (Sandbox Code Playgroud)

现在,我想在字符串RDD上应用正则表达式,并从字符串中提取子字符串,然后仅在新列中添加子字符串。

输入数据 :

BMW 1er Model,278
MINI Cooper Model,248
Run Code Online (Sandbox Code Playgroud)

我正在寻找的输出:

   Input                  |  Brand   | Series      
BMW 1er Model,278,          BMW ,        1er        
MINI Cooper Model ,248      MINI ,      Cooper
Run Code Online (Sandbox Code Playgroud)

其中Brand和Series是来自字符串RDD的新计算的子字符串

到目前为止我所做的。

我可以使用正则表达式为String实现此功能,但是我可以将其应用于所有行。

 val brandRegEx = """^.*[Bb][Mm][Ww]+|.[Mm][Ii][Nn][Ii]+.*$""".r //to look for BMW or MINI
Run Code Online (Sandbox Code Playgroud)

那我可以用

brandRegEx.findFirstIn("hello this mini is bmW testing")
Run Code Online (Sandbox Code Playgroud)

但是,如何将它用于RDD的所有行并应用不同的正则表达式来实现上述输出。

我阅读了有关此代码段的信息,但不确定如何将其完全放在一起。

val brandRegEx = """^.*[Bb][Mm][Ww]+|.[Mm][Ii][Nn][Ii]+.*$""".r

def getBrand(Col4: String) : String = Col4 match {
    case brandRegEx(str)  =>  
    case _ => ""
    return 'substring
}
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激 !

谢谢

regex scala pattern-matching apache-spark rdd

2
推荐指数
1
解决办法
2万
查看次数