如何在 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 个值?
如何基于多个空格字符将文本文件拆分为 2 列作为 scala spark 的分隔符