从具有 26 列的管道分隔文件中跳过第一行和最后一行,并使用 scala 将其添加到数据框
Skip first and last line from a pipe delimited file with 26 columns and make it to dataframe using scala
HD|20211210
DT|D-|12/22/2017|12/22/2017 09:41:45.828000|11/01/2017|01/29/2018 14:46:10.666000|1.2|1.2|ABC|ABC|123|123|4554|023|11/01/2017|ACDF|First|0012345||f|ABCD|ABCDEFGH|ABCDEFGH||||
DT|D-|12/25/2017|12/25/2017 09:24:20.202000|12/13/2017|01/29/2018 07:52:23.607000|6.4|6.4|ABC|ABC|123|123|4540|002|12/13/2017|ACDF|First|0012345||f|ABC|ABCDEF|ABCDEFGH||||
TR|0000000002
文件名为 Datafile.Dat。 Scala 版本 2.11
我需要用第一行创建 header 数据帧但不包括“HD|”,需要用最后一行创建尾部数据帧但不包括“TR|”,最后需要创建实际数据帧跳过第一行和最后一行并排除“DT|”从每一行。
请帮我解决这个问题。
我看到您为数据框定义了架构(第一行和最后一行除外)。
您可以做的是读取该文件,分隔符将为“|”
您可以启用“DROPMALFORMED”模式。
schema = 'define your schema here'
df = spark.read.option("mode","DROPMALFORMED").option("delimiter","|").option("header","true").schema(schema).csv("Datafile.Dat")
另一种方法是使用 zipWithIndex。
HD|20211210
DT|D-|12/22/2017|12/22/2017 09:41:45.828000|11/01/2017|01/29/2018 14:46:10.666000|1.2|1.2|ABC|ABC|123|123|4554|023|11/01/2017|ACDF|First|0012345||f|ABCD|ABCDEFGH|ABCDEFGH||||
DT|D-|12/25/2017|12/25/2017 09:24:20.202000|12/13/2017|01/29/2018 07:52:23.607000|6.4|6.4|ABC|ABC|123|123|4540|002|12/13/2017|ACDF|First|0012345||f|ABC|ABCDEF|ABCDEFGH||||
TR|0000000002
文件名为 Datafile.Dat。 Scala 版本 2.11
我需要用第一行创建 header 数据帧但不包括“HD|”,需要用最后一行创建尾部数据帧但不包括“TR|”,最后需要创建实际数据帧跳过第一行和最后一行并排除“DT|”从每一行。
请帮我解决这个问题。
我看到您为数据框定义了架构(第一行和最后一行除外)。 您可以做的是读取该文件,分隔符将为“|” 您可以启用“DROPMALFORMED”模式。
schema = 'define your schema here'
df = spark.read.option("mode","DROPMALFORMED").option("delimiter","|").option("header","true").schema(schema).csv("Datafile.Dat")
另一种方法是使用 zipWithIndex。