【问题标题】:How to remove header by using filter function in spark?如何在火花中使用过滤器功能删除标题?
【发布时间】:2018-07-20 16:35:24
【问题描述】:

我想从文件中删除标题。但是,由于文件将被分成多个分区,我不能只删除第一项。所以我使用过滤函数来解决这个问题,下面是我正在使用的代码:

val noHeaderRDD = baseRDD.filter(line=>!line.contains("REPORTDATETIME"));

我得到的错误是“错误未找到值行”这个代码可能是什么问题?

【问题讨论】:

  • 你检查过这个问题吗?如果是,你的有什么不同? stackoverflow.com/questions/27854919/…
  • 是的,我做到了。实际上,我的标题不是标准模式,它只是另一行,但字段定义了不同的类别。
  • 我不确定我是否理解您的解释。你介意复习吗?添加一个包含一些输入和预期输出的示例。

标签: scala apache-spark


【解决方案1】:

我认为没有人回答显而易见的问题,因此 line.contains 也是可能的:

val noHeaderRDD = baseRDD.filter(line => !(line contains("REPORTDATETIME")))

你快到了,只是语法问题,但这当然很重要!

【讨论】:

    【解决方案2】:

    如下使用textFile

    val rdd = sc.textFile(<<path>>)
    rdd.filter(x => !x.startsWith(<<"Header Text">>))
    

    或者

    在 Spark 2.0 中:

    spark.read.option("header","true").csv("filePath")
    

    【讨论】:

    • 如果我已经从文件中加载了数据并创建了一个 RDD,现在想要创建另一个 RDD 来获取部分数据并从中删除标题怎么办?
    • 提供您的示例输入文件和预期输出
    • 如前所述,您使用 spark.read 的最后一个选项会产生一些您未提及的副作用
    猜你喜欢
    • 2016-02-28
    • 1970-01-01
    • 2020-03-11
    • 1970-01-01
    • 2017-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多