在pyspark shell中运行的过滤器无法提交火花

时间:2018-08-02 19:42:59

标签: python-3.x apache-spark filter pyspark apache-spark-sql

  
    
      

df_filter = df.filter(〜(col('word')。isin(stop_words_list)))

             

df_filter.count()

    
  

27781

  
    
      

df.count()

    
  

31240

尽管使用spark-submit向Spark集群提交相同的代码时,过滤器功能无法正常运行,但stop_words_list中具有col('word')的行并未被过滤。 为什么会这样?

2 个答案:

答案 0 :(得分:0)

修剪col('word')后,过滤器现在开始工作。     df_filter = df.filter(~(trim(col("word")).isin(stop_words_list))) 我仍然不知道为什么它可以在pyspark shell中工作,但不能提交火花。它们唯一的区别是:在pyspark shell中,我使用spark.read.csv()读取文件,而在spark-submit中,我使用了以下方法。     from pyspark.sql import SparkSession     from pyspark.sql import SQLContext     session = pyspark.sql.SparkSession.builder.appName('test').getOrCreate()     sqlContext = SQLContext(session)     df = sqlContext.read.format("com.databricks.spark.csv").option('header','true').load() 我不确定两种不同的读取方法是否会导致差异。熟悉此事的人可以澄清。

答案 1 :(得分:-1)

尝试使用双引号而不是单引号。

from pyspark.sql.functions import col
df_filter = df.filter(~(col("word").isin(stop_words_list))).count()