【发布时间】:2015-06-03 05:54:41
【问题描述】:
我有一个这样的文本文件:-
这个食谱可以用立式搅拌机制作,也可以用碗、木勺和强壮的手臂手工制作。
如果您使用咸黄油,请省略
本食谱中添加的盐。
百胜
成分
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)。将面粉、
和发酵粉放入碗中用力搅拌,然后放在一边。
我想提取单词成分和方法之间的数据。
我写了一个正则表达式(?s)(?<=\bIngredients\b).*?(?=\bMethod\b)
提取数据,它工作正常。
但是,当我尝试使用以下 spark-shell 时,它并没有给我任何
任何东西。
val b = sc.textFile("/home/akshat/file.txt")
val regex = "(?s)(?<=\bIngredients\b).*?(?=\bMethod\b)".r
regex.findAllIn(b).foreach(println)
请告诉我哪里出错了,我应该采取什么步骤
改正了吗?
提前致谢!
【问题讨论】:
-
b是一个 RDD,regex.findAllIn适用于字符串。因此,您需要将正则表达式应用于 RDD 集合的字符串。可能是map或flatmap
标签: regex scala apache-spark pattern-matching