web-dev-qa-db-fra.com

PySpark: TypeError: L'objet 'Column' n'est pas appelable

Je charge des données à partir de HDFS, que je veux filtrer par variables spécifiques. Mais de toute façon, la commande Column.isin ne fonctionne pas. Il jette cette erreur:

TypeError: l'objet 'Column' n'est pas appelable

from pyspark.sql.functions import udf, col
variables = ('852-PI-769', '812-HC-037', '852-PC-571-OUT')
df = sqlContext.read.option("mergeSchema", "true").parquet("parameters.parquet")
same_var = col("Variable").isin(variables)
df2 = df.filter(same_var)

Le schéma ressemble à ceci:

df.printSchema()
root
 |-- Time: timestamp (nullable = true)
 |-- Value: float (nullable = true)
 |-- Variable: string (nullable = true)

Une idée de ce que je fais mal? PS: C’est Spark 1.4 avec Jupyter Notebook.

7
Matthias

Le problème est que isin a été ajouté à Spark dans la version 1.5.0 et n’est donc pas encore disponible dans votre version de Spark, comme indiqué dans la documentation de isinici .

Il existe une fonction similaire in dans l'API Scala introduite dans la version 1.3.0, qui possède une fonctionnalité similaire (il existe certaines différences dans les entrées puisque in accepte uniquement les colonnes). Dans PySpark, cette fonction s'appelle plutôt inSet . Exemples d'utilisation de la documentation:

df[df.name.inSet("Bob", "Mike")]
df[df.age.inSet([1, 2, 3])]

Note: inSet est dépossédé de la version 1.5.0 et suivant, isin devrait être utilisé dans les versions plus récentes.

1
Shaido

Veuillez utiliser le code ci-dessous pour vérifier

df.filter(df.Variable.isin(['852-PI-769', '812-HC-037', '852-PC-571-OUT']))
0
PSR