处理spark中没有delimter的文本文件

7eumitmz  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(609)

我有一个文本文件,这是大的大小(3 gb),并希望处理这个文本文件在Spark。此文本文件中没有分隔符。每50个字符后,新记录开始,但记录之间没有分隔符。我不知道如何加载数据和处理文件?
示例.txt
数据集数据集新数据集新数据集新数据集新数据集新数据集新数据集新数据集新数据集新数据集新数据集新数据集新数据集新数据集新数据集新数据集新数据集新数据集新数据集新数据集新数据集新数据集新数据集

sc.textFile('path/to/file.txt') # this not helping here as there is no delimiter between records

只是为了识别我使用了强调和强的模式,但是我们知道文本文件没有任何强调和强,它是纯文本。

k2fxgqgv

k2fxgqgv1#

我想我们需要 udf 在这种情况下 regexp_extract_all 在spark-3.1版本之前不可用 Example: ```
from pyspark.sql.functions import *
from pyspark.sql.types import *

read the file as csv

df=spark.read.csv("<file_path>").toDF("val")

udf to capture 50 character groups

def regex_all_matches(s):
all_matches = re.findall(r'.{1,50}', s)
return all_matches

register udf and

regex_all_matches_udf = udf(regex_all_matches, ArrayType(StringType()))

df2 = df.withColumn('val', explode(regex_all_matches_udf(col('val'))))

+--------------------------------------------------+

|val |

+--------------------------------------------------+

|thisisdatathisisdatathisisdatathisisdatathisisdata|

|thisisnewdatasetthisisnewdatasetthisisnewdatasetaa|

|thisisdatathisisdatathisisdatathisisdatathisisdata|

|thisisnewdatasetthisisnewdatasetthisisnewdatasetaa|

|thisisdatathisisdatathisisdatathisisdatathisisdata|

+--------------------------------------------------+

相关问题