簡體   English   中英

Spark-SQL 使用 withColumnRenamed()

[英]Spark-SQL using withColumnRenamed()

我正在嘗試加載包含 storyId1 和 publisher1 列的 Parquet 文件。 我想找到所有發布關於相同故事的文章的出版商對。 對於每個出版商對,需要報告共同出版的故事的數量。 兩家出版商共同出版的故事中的共同出版故事。 按頻率降序報告這些對。 解決方案必須符合以下規則: 1. 不應有任何重復的條目,例如:納斯達克、納斯達克、1000 2. 不應有同一對以相反的順序出現兩次。 只應出現以下情況之一:NASDAQ、Reuters、1000 Reuters、NASDAQ、1000(即在您的結果中同時包含上述兩行是不正確的)

現在它嘗試了以下代碼:

> import org.apache.spark.sql._
import org.apache.spark.sql.types._
import org.apache.spark.sql.functions._
import org.apache.spark.sql.expressions._
import spark.implicits._


val worddocDF = spark.read.parquet("file:///home/user204943816622/t4_story_publishers.parquet")
val worddocDF1 = spark.read.parquet("file:///home/user204943816622/t4_story_publishers.parquet")
worddocDF.cache()
val joinDF = worddocDF.join(worddocDF1, "storyId1").withColumnRenamed("worddocDF.publisher1", "publisher2")
joinDF.filter($"publisher1" !== $"publisher2")

輸入格式:

[ddUyU0VZz0BRneMioxUPQVP6sIxvM, Livemint]

[ddUyU0VZz0BRneMioxUPQVP6sIxvM, IFA Magazine]

[ddUyU0VZz0BRneMioxUPQVP6sIxvM, Moneynews]

[ddUyU0VZz0BRneMioxUPQVP6sIxvM, NASDAQ]

[dPhGU51DcrolUIMxbRm0InaHGA2XM, IFA Magazine]

[ddUyU0VZz0BRneMioxUPQVP6sIxvM, Los Angeles Times]

[dPhGU51DcrolUIMxbRm0InaHGA2XM, NASDAQ]

所需 output:

[

NASDAQ,IFA Magazine,2]

[Moneynews,Livemint,1]

[Moneynews,IFA Magazine,1]

[NASDAQ,Livemint,1]

[NASDAQ,Los Angeles Times,1]

[Moneynews,Los Angeles Times,1]

[Los Angeles Times,IFA Magazine,1]

[Livemint,IFA Magazine,1]

[NASDAQ,Moneynews,1]

[Los Angeles Times,Livemint,1]
import spark.implicits._

    wordDocDf.as("a")
    .join(
      wordDocDf.as("b"),
      $"a.storyId1" === $"b.storyId1" && $"a.publisher1" =!= $"b.publisher1",
      "inner"
    )
    .select(
      $"a.storyId1".as("storyId"),
      $"a.publisher1".as("publisher1"),
      $"b.publisher1".as("publisher2")
    )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM