[英]Create an empty DF using schema from another DF (Scala Spark)
[英]Using rlike with list to create new df scala
兩天前剛從 scala 開始。
事情是這樣的,我有一個 df 和一個列表。 df 包含兩列:段落和作者,列表包含單詞(字符串)。 我需要計算作者出現列表中每個單詞的所有段落的計數。
到目前為止,我的想法是在列表上創建一個 for 循環以使用 rlike 查詢 df 並創建一個新的 df,但即使這確實有效,我也不知道該怎么做。 任何幫助表示贊賞!
編輯:添加示例數據和預期的 output
// Example df and list
val df = Seq(("auth1", "some text word1"), ("auth2","some text word2"),("auth3", "more text word1").toDF("a","t")
df.show
+-------+---------------+
| a| t|
+-------+---------------+
|auth1 |some text word1|
|auth2 |some text word2|
|auth1 |more text word1|
+-------+---------------+
val list = List("word1", "word2")
// Expected output
newDF.show
+-------+-----+----------+
| word| a|text count|
+-------+-----+----------+
|word1 |auth1| 2|
|word2 |auth2| 1|
+-------+-----+----------+
您可以對列表中的每個單詞進行過濾和聚合,並使用unionAll
組合所有生成的數據幀:
val result = list.map(word =>
df.filter(df("t").rlike(s"\\b${word}\\b"))
.groupBy("a")
.agg(lit(word).as("word"), count(lit(1)).as("text count"))
).reduce(_ unionAll _)
result.show
+-----+-----+----------+
| a| word|text count|
+-----+-----+----------+
|auth3|word1| 1|
|auth1|word1| 1|
|auth2|word2| 1|
+-----+-----+----------+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.