【问题标题】:How to filter the data from Rdd and save it to text file using scala in spark如何从 Rdd 中过滤数据并将其保存到文本文件中使用 scala in spark
【发布时间】:2020-08-11 06:05:32
【问题描述】:

我有两个 TSV 格式的数据集。我想在 spark scala 中读取 TSV 文件并执行分析。文件 1 有 8 月数据,文件 2 有 9 月数据。 如何在 spark 中使用 scala 读取两个 tsv 文件并将输出保存到另一个 tsv 文件。我想在两个 RRD 上使用交集操作

以下是两种 TSV 文件格式。 文件 1

文件 2

输出文件应该有两个月份都可以访问的 App_Name。

输出文件数据。

【问题讨论】:

  • 你至少尝试过什么吗?
  • 我已读取文件但无法执行交集操作以获得所需的 o/p val spark = SparkSession.builder.getOrCreate() val file1 = spark.read.option("sep", " \t").csv("file1path") val file2 = spark.read.option("sep", "\t").csv("file2path")

标签: scala apache-spark rdd


【解决方案1】:
val dfTsv1 = spark.read.format("com.databricks.spark.csv")
      .option("delimiter", "\t")
      .load("filepath1")
    val dfTsv2 = spark.read.format("com.databricks.spark.csv")
      .option("delimiter", "\t").load("filepath2")


    val duplicateColumns = List("") // put your duplicate column names here 
    val outputDf = dfTsv1.alias("tcv1").join(dfTsv2.alias("tcv2"),dfTsv1("ACCESSED_MONTH") === dfTsv1("ACCESSED_MONTH"))
      .drop(duplicateColumns: _*)

    outputDf.show()

【讨论】:

【解决方案2】:

交集只是内连接,只需对两个数据帧执行内连接操作即可。参考Spark SQL Joins

val df = df1.join(df2, Seq("APP_NAME"), "inner")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    • 1970-01-01
    相关资源
    最近更新 更多