如何在 Scala Spark 中删除两行分隔符值之间的部分文件? [关闭]

Posted

技术标签:

【中文标题】如何在 Scala Spark 中删除两行分隔符值之间的部分文件? [关闭]【英文标题】:How to remove part of file between two line delimiter values in Scala Spark? [closed] 【发布时间】:2017-12-05 20:00:33 【问题描述】:

我有如下文字,

TIME STAMP1 
   A1200 EVENT START
   EVENT NAME          = DOS
   EVENT_INS       = 1
   EVENT_ID       = 100  
   BUFFER             = 233355   
   FORMAT           = ATC
   LOC              = C:/User/data
;
TIME STAMP2 
   A1201 EVENT START
   EVENT NAME          = DOS
   EVENT_INS       = 0
   EVENT_ID       = 87  
   BUFFER             = 773355   
   FORMAT           = ETC
   LOC              = C:/User/data
;

如何根据 A1201 删除 TIME STAMP2,需要从 A1201 删除到 ;使用 scala.A1201 传感器部分将在文件中的不同位置重复。无论它来自哪里,我都需要从 A1201 删除到 ;..

如何使用 Scala Spark?。

【问题讨论】:

【参考方案1】:

您可以使用以下简单的解决方案

val rdd = sparkContext.wholeTextFiles("path to the text file")
rdd.map(x => x._2.replace("\n", "|*|").split(";").filter(!_.contains("A1201")).mkString(";").replace("|*|", "\n")+";")

其中,wholeTextFiles 将以Tuple2 格式读取文件,文件名作为第一个参数,文本数据作为第二个参数x._2.replace("\n", "|*|") 用要使用的特殊字符替换换行符later.split(";"); 处拆分文本并形成数组.filter(!_.contains("A1201")) 过滤掉从A1201; 的所有文本.mkString(";").replace("|*|", "\n")+";" 将字符串数组转换为原始格式。

希望回答对你有帮助

【讨论】:

您好 Ramesh Maharjan,非常完美...为此目的...我将在解析机制中尝试并更新...谢谢 你好 Ramesh,转换为数据帧后,它只显示一行带有 TIME STAMP1 .val rdd2 = rdd1.toDF() //rdd1 是解析 rdd2.show(20,false) 的 RDD 字符串.......这可能是什么错误 首先我需要了解你是如何形成数据框的。您能否就您如何形成数据框和您的问题提出另一个问题?同时,如果这个答案对你有帮助,那么你可以接受它并在可能的情况下投票 谢谢你,ramesh。我只有一个文件。上面相同的拆分方法,我该如何使用 sc.textFile()。我需要两列带有 val1 和 val2。例如,事件名称,DOS 和 EVENT_INS, 1 等。这里我需要根据分隔符转换数据框中的列,作为分隔符....所以,col1 包含事件名称,col2 包含火花数据框模型中的 DOS。但是当我尝试转换为数据框时,所有字符串都作为第一行。但是当我使用 sc.textFile() 方法时,每个 value1 和 value 2 在数据框模型中作为单独的列出现。我使用了 .How to upvote .def 我会做 ..val dataDF = rdd1。 toDS(); dataDF.show() val dataDF 数据,密钥对已解决...谢谢。

以上是关于如何在 Scala Spark 中删除两行分隔符值之间的部分文件? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用分隔符 ^|^ 将数据文件加载到 spark scala 中?

如何在 Spark Scala 数据框中拆分逗号分隔的字符串并获取 n 个值?

如何在 Spark/Scala 中查找具有许多空值的列

如何基于多个空格字符将文本文件拆分为 2 列作为 scala spark 的分隔符

如何在 if-else 条件下的列中使用 Spark 值 - Scala

如何在spark scala数据框中更新嵌套列的xml值