Regex apachespark中的正则表达式

Regex apachespark中的正则表达式,regex,scala,apache-spark,pattern-matching,Regex,Scala,Apache Spark,Pattern Matching,我有一个文本文件,如下所示:- 这个食谱可以用立式搅拌机制作,也可以用碗、木勺和强壮的手臂手工制作。如果您使用咸黄油,请省略此配方中添加的盐。 百胜 配料 1 1/4杯通用面粉(160克) 1/4茶匙盐 1/2茶匙发酵粉 室温下1/2杯无盐黄油(1根或8汤匙或112克) 1/2杯白糖(90克) 1/2杯深红糖,包装(85克) 1个大鸡蛋 1茶匙香草精 1/2茶匙速溶咖啡颗粒或速溶浓缩咖啡粉 1/2杯碎澳洲坚果(3 1/2盎司或100克) 1/2杯白巧克力片 方法 1将烤箱预热至350°F(175

我有一个文本文件,如下所示:-

这个食谱可以用立式搅拌机制作,也可以用碗、木勺和强壮的手臂手工制作。如果您使用咸黄油,请省略此配方中添加的盐。
百胜
配料
1 1/4杯通用面粉(160克)
1/4茶匙盐
1/2茶匙发酵粉
室温下1/2杯无盐黄油(1根或8汤匙或112克)
1/2杯白糖(90克)
1/2杯深红糖,包装(85克)
1个大鸡蛋
1茶匙香草精
1/2茶匙速溶咖啡颗粒或速溶浓缩咖啡粉
1/2杯碎澳洲坚果(3 1/2盎司或100克)
1/2杯白巧克力片
方法
1将烤箱预热至350°F(175°C)。将面粉、
和发酵粉放入碗中,用力搅拌,备用。

我想提取单词成分和方法之间的数据
我已经写了一个正则表达式,你需要做的是

  • 使用WholeTextFiles读取文件(这样它就不会断行,您可以一起读取整个数据)
  • 编写一个函数,该函数接受一个字符串并使用该正则表达式输出一个字符串 因此,它可能看起来像(在python中)
  • 大宗报价

    def getWhatIneed(s):
        output = <my regexp>
        return output
    
    b = sc.WholeTextFiles(...)
    c = b.map(getWhatIneed)
    

    问题是,函数定义中的输出应该返回您所说的字符串,但regexp的类型是scala.util.matching.regex,因此它会给出一个类型不匹配错误。在这种情况下,我的方法应该是什么?这是一个scala regex问题。无论如何,我在这方面不是专家。通过查找scala api文档,似乎需要将字符串传递给regexp实例,然后使用findAllMatchIn之类的方法提取输出。
    b
    是一个RDD,
    regex。findAllIn
    应用于字符串。因此,您需要将regex应用于RDD集合的字符串。可能使用类似于
    map
    flatmap
    def getWhatIneed(s):
        output = <my regexp>
        return output
    
    b = sc.WholeTextFiles(...)
    c = b.map(getWhatIneed)
    
    print c.collect()