scala - 在 Scala 和 Spark 中根据长度跳过一些行

标签 scala apache-spark

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

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

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

我的代码:
 val Bi = text.map(sen=> sen.split(" ").sliding(2))

有什么解决办法吗?

最佳答案

我会使用过滤器:

> 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 .

从这里,您可以在过滤后以原始形式(即未标记化)处理数据。如果您更喜欢先标记化,那么您可以这样做:
text.map{_.split(" ")}.filter{_.size > 2}

所以,最后,要分词,然后过滤,然后用 sliding 找到二元组。 ,你会使用:
text.map{_.split(" ")}.filter{_.size > 2}.map{_.sliding(2)}

关于scala - 在 Scala 和 Spark 中根据长度跳过一些行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30670337/

相关文章:

caching - apache Spark sql 中的缓存表

python - 并行化步骤中的 Spark 内存错误

Scala 的参数列表中带有 "..."的 Java 函数

apache-spark - Spark 从 SAS IOM 读取 JDBC

hadoop - Databricks是否为给定的群集和数据集提供建议的 Spark 参数?

Scala源从Int到RichInt的隐式转换

python - 如何在 pyspark shell 中使用粘贴模式?

scala - Spark - 将 CSV 文件加载为 DataFrame?

scala - Apache Spark中的混洗与非混洗合并

scala - 如何在scala中实现惰性序列(可迭代)?