如何在Apache Spark中动态传递参数来过滤函数?

时间:2017-07-03 05:38:58

标签: apache-spark pyspark apache-spark-sql

我有一份员工档案,其中包含以下数据:

Name:   Age:
David   25
Jag     32
Paul    33
Sam     18

我在Apache Spark中加载到dataframe,我正在按以下方式过滤值:

employee_rdd=sc.textFile("employee.txt")
employee_df=employee_rdd.toDF()
employee_data = employee_df.filter("Name = 'David'").collect() 
+-----------------+-------+
|            Name:|   Age:|
+-----------------+-------+
|David            |25     |
+-----------------+-------+

但是当我尝试做这样的事情时:

emp_Name='Sam'并将此名称传递给过滤器,如下所示:

employee_data = employee_df.filter("Name = 'emp_Name'").collect

但这给了我空名单。

3 个答案:

答案 0 :(得分:3)

这可以在scala中完成,您可以将其更改为python

val emp_name = "Sam"

val employee_data = employee_df.filter(col("Name") === emp_name)

希望这有帮助!

答案 1 :(得分:2)

尝试以下方法:

emp_Name='Sam'
employee_data = employee_df.filter(employee_df["Name"] == emp_Name).collect()

答案 2 :(得分:-2)

from pyspark.sql.functions import col
filter_condition= col("Name").isin(["Sam","John"])
employee_data = employee_df.filter(filter_condition).collect