Spark:返回每个数据集行的所有正则表达式匹配项

时间:2018-09-13 11:25:34

标签: regex scala apache-spark apache-spark-sql

我有一个从.csv文件(此处由ds模仿)加载的数据集,该数据集包含两行:一行带有文章的发布日期(publishDate),另一行带有提到的名称和它们在该文章(allNames)中的字符偏移量。

我正在尝试计算每天提到一个名字的次数,我认为从映射{ex1}开始,通过映射正则表达式操作来消除字符偏移将是一件好事。看一下代码:

allNames

当我致电import org.apache.spark.sql._ import org.apache.spark.sql.types._ case class Data(publishDate: String, allNames: String) val ds = Seq(Data("01-01-2018", "Channel One,628;Channel One,755;Channel One,1449;Channel One"), Data("01-02-2018", "Waite Park,125;City Food,233;Adobe Flash Player,348;Charter Channel,554")).toDS() val pattern = """([^\;\,]+),\d+""".r val processed_ds = ds.map(data => (data.publishDate, (for (m <- pattern.findAllMatchIn(data.allNames)) yield m.group(1)).toList)) 时,会给出完整的错误列表。

这是怎么回事?

注意:我是Scala的新手。

编辑:

processed_ds.collect().foreach(println)的预期输出为:

processed_ds.collect().foreach(println)

还是通过某种拆分操作更容易实现?

0 个答案:

没有答案