Apache spark 在Spark中处理文本文件而不删除
我有一个大的文本文件(3 GB),想在spark中处理这个文本文件。此文本文件中没有分隔符。每50个字符后,新记录开始,但记录之间没有分隔符。我不知道如何加载数据和处理文件 sample.txt 这是数据这是数据这是数据这是数据这是新数据集这是新数据集这是新数据集这是新数据集Apache spark 在Spark中处理文本文件而不删除,apache-spark,pyspark,text-files,rdd,Apache Spark,Pyspark,Text Files,Rdd,我有一个大的文本文件(3 GB),想在spark中处理这个文本文件。此文本文件中没有分隔符。每50个字符后,新记录开始,但记录之间没有分隔符。我不知道如何加载数据和处理文件 sample.txt 这是数据这是数据这是数据这是数据这是新数据集这是新数据集这是新数据集这是新数据集 为了识别我使用了emphasis和strong的模式,但是我们知道文本文件没有任何emphasis和strong,它是纯文本。我认为我们需要使用udf,因为regexp\u extract\u all直到Spark-3.1
为了识别我使用了emphasis和strong的模式,但是我们知道文本文件没有任何emphasis和strong,它是纯文本。我认为我们需要使用
udf
,因为regexp\u extract\u all
直到Spark-3.1版本才可用
示例:
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|
#+--------------------------------------------------+
从pyspark.sql.functions导入*
从pyspark.sql.types导入*
#以csv格式读取文件
df=spark.read.csv(“”.toDF(“val”)
#udf将捕获50个字符组
def正则表达式所有匹配项:
all_matches=re.findall(r'{1,50}',s)
返回所有匹配项
#注册自定义项和
regex\u all\u matches\u udf=udf(regex\u all\u matches,ArrayType(StringType()))
df2=df.withColumn('val',explode(regex_all_matches_udf(col('val')))
#+--------------------------------------------------+
#|瓦尔|
#+--------------------------------------------------+
#|这是数据这是数据这是数据这是数据|
#|这是新数据集这是新数据集这是新数据集|
#|这是数据这是数据这是数据这是数据|
#|这是新数据集这是新数据集这是新数据集|
#|这是数据这是数据这是数据这是数据|
#+--------------------------------------------------+
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|
#+--------------------------------------------------+