I'm trying to extract from dataframe rows that contains words from list: below I'm pasting my code:
from pyspark.ml.feature import Tokenizer, RegexTokenizer
from pyspark.sql.functions import col, udf
from pyspark.sql.types import IntegerType
from pyspark.sql.types import IntegerType
import findspark
findspark.init()
conf = SparkConf().setAppName("nlp").setMaster("spark://192.168.1.51:7077")\
.set("spark.jars","/home/artur/elasticsearch-spark-20_2.11-7.8.1.jar")\
.set("spark.sql.repl.eagerEval.enabled",True)\
.set("spark.cores.max","8")\
.set("spark.executor.memory", "2g")\
.set("spark.driver.memory", "2g")\
.set("spark.sql.repl.eagerEval.enabled",True)
sc = SparkContext(conf=conf).getOrCreate()
sqlContext = SQLContext(sc)
spark = SparkSession(sc)
sentenceDataFrame = spark.createDataFrame([
(0, ["Hi", "I" ,"heard" ,"about", "Spark"]),
(1, ["I", "wish" ,"Java", "could", "use", "case", "classes"]),
(2, ["Logistic","regression","models","are","neat"])
], ["id", "sentence"])
my_list = ['Java','Spark']
selected_df = sentenceDataFrame.filter(sentenceDataFrame.sentence.isin(my_list))
and im getting following error:
Py4JJavaError: An error occurred while calling o262.filter.
: org.apache.spark.sql.AnalysisException: cannot resolve '(`sentence` IN ('Java', 'Spark'))' due to data type mismatch: Arguments must be same type but were: array<string> != string;;
'Filter sentence#27 IN (Java,Spark)
+- LogicalRDD [id#26L, sentence#27], false
Please give me advice how to solve this issue