首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据Scala和Spark的长度跳过一些行

根据Scala和Spark的长度跳过一些行
EN

Stack Overflow用户
提问于 2015-06-05 15:27:06
回答 2查看 939关注 0票数 4

我有一个包含大量文档的文件,如何跳过长度为<= 2的行,然后处理长度> 2的行,例如:

代码语言:javascript
复制
fit perfectly clie .
purchased not
instructions install helpful . improvement battery life not hoped .
product.
cable good not work . cable extremely hot not recognize devices .

跳过行后:

代码语言:javascript
复制
fit perfectly clie .
instructions install helpful . improvement battery life not hoped .
cable good not work . cable extremely hot not recognize devices .

我的代码:

代码语言:javascript
复制
 val Bi = text.map(sen=> sen.split(" ").sliding(2))

有什么解决办法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-05 15:38:30

我会用过滤器:

代码语言:javascript
复制
> val text = sc.parallelize(Array("fit perfectly clie .",
                                "purchased not",
                                "instructions install helpful . improvement battery life not hoped .",
                                "product.",
                                "cable good not work . cable extremely hot not recognize devices ."))

> val result = text.filter{_.split(" ").size > 2}
> result.collect.foreach{println}

fit perfectly clie .
instructions install helpful . improvement battery life not hoped .
cable good not work . cable extremely hot not recognize devices .

从这里开始,您可以在过滤后处理数据的原始形式(即不标记化)。如果您希望先标记,那么可以这样做:

代码语言:javascript
复制
text.map{_.split(" ")}.filter{_.size > 2}

因此,最后,要标记,然后过滤,然后使用sliding查找bigram,您可以使用:

代码语言:javascript
复制
text.map{_.split(" ")}.filter{_.size > 2}.map{_.sliding(2)}
票数 2
EN

Stack Overflow用户

发布于 2015-06-05 15:33:20

flatMap怎么样?

代码语言:javascript
复制
text.flatMap(line=>{
  val tokenized = line.split(" ")
  if(tokenized.length > 2) Some(tokenized.sliding(2))
  else None
})
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30670337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档