Вот способ использования только API DataFrame. Сначала используйте функцию split
для разделения строк genres
, затем explode
массив результатов и groupBy genres
для подсчета:
data = [["Action"], ["Action|Adventure|Thriller"], ["Action|Adventure|Drama"]]
df = spark.createDataFrame(data, ["genres"])
df = df.withColumn("genres", explode(split(col("genres"), "[|]"))) \
.groupBy("genres").count()
df.show()
Дает:
+---------+-----+
| genres|count|
+---------+-----+
| Thriller| 1|
|Adventure| 2|
| Drama| 1|
| Action| 3|
+---------+-----+