从 Pyspark 中的 .TXT 文件中删除最后一个分隔符
Remove last delimeter from a .TXT file in Pyspark
我有一个从不同系统生成的 S3 文件,如下所示:
A1|~|B1|~|C1|~|D1|~|
A2|~|B2|~|C2|~|D2|~|
A3|~|B3|~|C3|~|D3|~|
A4|~|B4|~|C4|~|D4|~|
现在,在 AWS Glue Pyspark 脚本中读取此文件时,我想从文件中删除最后一个分隔符。你能告诉我怎么做吗?
问题是——
在尝试将此 .TXT 文件转换为镶木地板时,当我将分隔符称为“|~|”时它在末尾添加了一个额外的列。发生这种情况是因为在源文件中有一个额外的 |~|每行末尾的分隔符。
这就是为什么我要删除最后一个 |~|文件中每一行的分隔符,然后将其转换为镶木地板。
代码:-
input = sc.textFile("filename.TXT").map(lambda x: x.split('|~|'))
df=spark.createDataFrame(input,list_of_colun_names)
您所要做的就是删除由您的 lambda 函数创建的数组的最后一个元素。
因此您可以将 lambda 函数更改为类似这样的内容。
input = sc.textFile("filename.TXT").map(lambda x: x.split('|~|')[:-1])
我有一个从不同系统生成的 S3 文件,如下所示:
A1|~|B1|~|C1|~|D1|~|
A2|~|B2|~|C2|~|D2|~|
A3|~|B3|~|C3|~|D3|~|
A4|~|B4|~|C4|~|D4|~|
现在,在 AWS Glue Pyspark 脚本中读取此文件时,我想从文件中删除最后一个分隔符。你能告诉我怎么做吗?
问题是—— 在尝试将此 .TXT 文件转换为镶木地板时,当我将分隔符称为“|~|”时它在末尾添加了一个额外的列。发生这种情况是因为在源文件中有一个额外的 |~|每行末尾的分隔符。
这就是为什么我要删除最后一个 |~|文件中每一行的分隔符,然后将其转换为镶木地板。
代码:-
input = sc.textFile("filename.TXT").map(lambda x: x.split('|~|'))
df=spark.createDataFrame(input,list_of_colun_names)
您所要做的就是删除由您的 lambda 函数创建的数组的最后一个元素。
因此您可以将 lambda 函数更改为类似这样的内容。
input = sc.textFile("filename.TXT").map(lambda x: x.split('|~|')[:-1])