通过spark读取文件时的默认输入文件分隔符是换行符(\n)。可以使用“textinputformat.record.delimiter”属性定义自定义分隔符。
但是,是否可以为同一个文件指定多个分隔符?
假设文件包含以下内容:
COMMENT,A,B,C
COMMENT,D,E,
F
LIKE,I,H,G
COMMENT,J,K,
L
COMMENT,M,N,O
我想用分隔符作为注解和like而不是换行符来读取这个文件。
尽管如此,如果spark中不允许使用多个分隔符,我还是想出了一个替代方法。
val ss = SparkSession.builder().appName("SentimentAnalysis").master("local[*]").getOrCreate()
val sc = ss.sparkContext
sc.hadoopConfiguration.set("textinputformat.record.delimiter", "COMMENT")
val rdd = sc.textFile("<filepath>")
val finalRdd = rdd.flatmap(f=>f.split("LIKE"))
但是,我仍然认为最好有多个自定义分隔符。有可能在Spark里吗?或者我必须使用上述替代方案?
1条答案
按热度按时间wljmcqd81#
通过创建一个自定义textinputformat类来解决上述问题,该类在两种类型的分隔符字符串上进行拆分。@puhlen在评论中指出的帖子帮了大忙。下面是我使用的代码片段:
在从文件系统读取文件时,请使用中的以下类,您的文件将根据需要使用两个分隔符进行读取。:)