繁体   English   中英

使用 Apache Spark Scala 的正则表达式 RDD

[英]Regex RDD using Apache Spark Scala

我有以下RDD:

x: Array[String] =
Array("Et: NT=grouptoClassify,hadoop-exec,sparkConnection,Ready
group: NT=app_1,hadoop-exec,sparkConnection,Ready
group: NT=app_exmpl_2,DB-exec,MDBConnection,NR
group: NT=apprexec,hadoop-exec,sparkConnection,Ready
group: NT=nt_prblm_app,hadoop-exec,sparkConnection,NR

我只想获取此 RDD 的每个部分的第一部分,如您在下一个示例中所见:

Et: NT=grouptoClassify
group: NT=app_1
group: NT=app_exmpl_2
group: NT=apprexec
group: NT=nt_prblm_app

为此,我正在尝试这种方式。

//Here I get the RDD:
val x = spark.sparkContext.parallelize(List(value)).collect()
//Try to use regex on it, this regex is to get until the first comma
val regex1 = """(^(.+?),)"""
val rdd_1 = x.map(g => g.matches(regex1))

这是我正在尝试的,但对我不起作用,因为我只得到了一个 Boolean 数组。 我究竟做错了什么?

我是 Apache Spark Scala 的新手。 如果您需要更多东西,请告诉我。 提前致谢!

试试这个正则表达式:

^\s*([^,]+)(_\w+)?

演示

尝试这个。

val x: Array[String] =
    Array(
      "Et: NT=grouptoClassify,hadoop-exec,sparkConnection,Ready",
      "group: NT=app_1,hadoop-exec,sparkConnection,Ready",
      "group: NT=app_exmpl_2,DB-exec,MDBConnection,NR",
      "group: NT=apprexec,hadoop-exec,sparkConnection,Ready",
      "group: NT=nt_prblm_app,hadoop-exec,sparkConnection,NR")

  val rdd = sc.parallelize(x)

  val result = rdd.map(lines => {
    lines.split(",")(0)
  })

  
 result.collect().foreach(println)

output:

Et: NT=grouptoClassify
group: NT=app_1
group: NT=app_exmpl_2
group: NT=apprexec
group: NT=nt_prblm_app

使用 RDD:

 val el = Seq("Et: NT=grouptoClassify,hadoop-exec,sparkConnection,Ready",
   "group: NT=app_1,hadoop-exec,sparkConnection,Ready",
   "group: NT=app_exmpl_2,DB-exec,MDBConnection,NR",
   "group: NT=apprexec,hadoop-exec,sparkConnection,Ready",
   "group: NT=nt_prblm_app,hadoop-exec,sparkConnection,NR")

val rdd = spark.sparkContext.parallelize((el).map((Row(_))))
val pattern = "([a-zA-Z0-9=:_ ]+),(.*)".r

rdd.map { 
  case Row(str) => str match {
    case pattern(gr1, _) => gr1 
  }
}.foreach(println(_))

它给:

Et: NT=grouptoClassify
group: NT=app_1
group: NT=app_exmpl_2
group: NT=apprexec
group: NT=nt_prblm_app

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM