Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 在Spark中处理文本文件而不删除_Apache Spark_Pyspark_Text Files_Rdd - Fatal编程技术网

Apache spark 在Spark中处理文本文件而不删除

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

我有一个大的文本文件(3 GB),想在spark中处理这个文本文件。此文本文件中没有分隔符。每50个字符后,新记录开始,但记录之间没有分隔符。我不知道如何加载数据和处理文件

sample.txt

这是数据这是数据这是数据这是数据这是新数据集这是新数据集这是新数据集这是新数据集


为了识别我使用了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|
#+--------------------------------------------------+