使用Spark和Scala筛选出任何未正确解析的记录

使用Spark和Scala筛选出任何未正确解析的记录,scala,hadoop,apache-spark,bigdata,Scala,Hadoop,Apache Spark,Bigdata,我有一个包含几行的txt文件。请参见下面两行的示例: 2014-03-15:10:10:20,Sorrento F41L,8cc3b47e-bd01-4482-b500-28f2342679af,7,24,39,enabled,disabled,connected,55,67,12,33.6894754264,-117.543308253 2014-03-15:10:10:20|MeeToo 1.0|ef8c7564-0a1a-4650-a655-c8bbd5f8f943|0|31|63|70|

我有一个包含几行的txt文件。请参见下面两行的示例:

2014-03-15:10:10:20,Sorrento F41L,8cc3b47e-bd01-4482-b500-28f2342679af,7,24,39,enabled,disabled,connected,55,67,12,33.6894754264,-117.543308253
2014-03-15:10:10:20|MeeToo 1.0|ef8c7564-0a1a-4650-a655-c8bbd5f8f943|0|31|63|70|39|27|enabled|enabled|enabled|37.4321088904|-121.485029632
如您所见,第一行是逗号分隔的,而第二行是管道分隔的。该文件包含许多行,其中一些行以逗号分隔,另一些行以管道分隔

我需要做的是过滤掉所有没有正确解析的记录(即每个正确解析的记录/行应该正好有14个值/字段)

首先,我使用sc.textFile(“/path/filename.txt”)读取文件,但我不知道如何继续

sc.textFile("/path/filename.txt").map( _.split("[|,]") ).filter( _.length == 14 )

管道和逗号分隔线都是值吗?逗号是否可以显示在管道分隔线中,管道是否可以显示在逗号分隔线中?基本上,您需要定义“正确解析”的含义。不,逗号不会出现在以管道分隔的行中,管道也不会出现在以逗号分隔的行中。因此,您只需在
[|,]
上拆分,然后按@stevewaldram的答案计算字段。确切地说,这就是我已经做的。所以非常感谢,它工作正常。