小编Shi*_*iva的帖子

使用filter()方法查找Scala中以数字开头的行

我是一个python程序员,因为Python API对我的Spark应用程序来说太慢了,所以决定将我的代码移植到Spark Scala API,以比较计算时间.

我试图使用Spark中的Scala API从一个巨大的文件中过滤掉以数字字符开头的行.在我的文件中,有些行有数字,有些有单词,我想要只有数字的行.

所以,在我的Python应用程序中,我有这些行.

l = sc.textFile("my_file_path")
l_filtered = l.filter(lambda s: s[0].isdigit())
Run Code Online (Sandbox Code Playgroud)

这完全符合我的要求.

这是我到目前为止所尝试的.

val l = sc.textFile("my_file_path")
val l_filtered = l.filter(x => x.forall(_.isDigit))
Run Code Online (Sandbox Code Playgroud)

这会抛出一个错误,说char没有forall()函数.

我还尝试使用s.take(1)获取行的第一个字符,并按以下方式对其应用isDigit()函数.

val l = sc.textFile("my_file_path")
val l_filtered = l.filter(x => x.take(1).isDigit)
Run Code Online (Sandbox Code Playgroud)

这也是......

val l = sc.textFile("my_file_path")
val l_filtered = l.filter(x => x.take(1).Character.isDigit)
Run Code Online (Sandbox Code Playgroud)

这也会引发错误.

这基本上是一个小错误,因为我不习惯Scala语法,所以我很难搞清楚它.任何帮助,将不胜感激.

编辑:作为这个问题的答案,我尝试编写该函数,但我无法在我的应用程序中的filter()函数中使用它.将函数应用于文件中的所有行.

syntax scala apache-spark

1
推荐指数
1
解决办法
2608
查看次数

标签 统计

apache-spark ×1

scala ×1

syntax ×1