从外部文件过滤数据帧

时间:2017-07-13 10:31:49

标签: apache-spark dataframe apache-spark-sql user-defined-functions

我想从外部文件中过滤我的数据帧。 这就是我的数据框架的样子:

val Insert=Append_Ot.filter(col("Name2").equalTo("brazil") || col("Name2").equalTo("france") || col("Name2").equalTo("algeria")|| col("Name2").equalTo("tunisia") || col("Name2").equalTo("egypte")  )

我想要过滤它们的国家/地区的数量是可更改的,因此创建了一个外部此文件:

 1  brazil
 2  france
 3  algeria
 4  tunisia
 5  egypte

我想创建UDF以从此文件中过滤我的数据帧。

谢谢

1 个答案:

答案 0 :(得分:1)

您需要从要过滤的文件中创建Seq。 看起来像这样:

val l = List("Brasil", "Algeria", "Tunisia", "Egypt")

您可以使用textFile方法。假设您的文件包含:

1 Algeria
2 Tunisia
3 Brasil
4 Egypt

您可以使用:

val countries = sc.textFile("hdfs://namenode/user/cloudera/file").map(_.split(" ")(1)).collect

会给你:

countries : Array[String] = Array(Algeria, Tunisia, Brasil, Egypt)

然后,使用列isin

上的Name2函数
val Insert = Append_Ot.where($"Name2".isin( countries : _* ) )