Spark:是否可以从不同格式的多个文件加载RDD?

时间:2017-01-13 07:49:43

标签: scala apache-spark spark-dataframe rdd file-format

我有一个异构格式的文件输入,批处理模式。

我想在多个文件上运行批处理。这些文件格式不同,它们将具有不同的映射来规范化数据(例如,将具有不同模式名称或记录位置的字段提取到标准命名)。

鉴于数据的表格性质,我考虑使用Dataframes(由于Spark版本我不能使用数据集)。

为了将不同的提取逻辑应用于每个文件 - 是否需要将每个文件加载到单独的数据帧中,然后应用提取逻辑(提取某些文件,每个文件类型的进程不同,按术语配置)例如CSV / JSON / XML,要选择的字段位置(CSV),要选择的字段名称(JSON)等),然后加入数据集? 这将迫使我迭代文件,分别对每个数据帧进行操作,然后加入数据帧;而不是应用相同的(可配置的)逻辑。

我知道我可以用RDD制作它,即将所有文件加载到RDD中,发出PairRDD [fileId,record],然后运行一个映射,你可以在其中查看fileId以获取应用于该记录的配置,告诉你应用哪种逻辑。

在性能,简单性和解析方面,我宁愿使用Dataframes,因为它提供了优于原始RDDS的所有细节。

使用Dataframes解决这个问题的方法是否比已经解释过的更好?我可能有任何建议或误解吗?

我使用Scala,但这个问题无关紧要。

0 个答案:

没有答案