[英]Reading a file with multiple section headers in Apache Spark with variable section content
是否可以使用Spark API讀取包含多個具有不同標題的節的大型 CSV文件? 文件的結構如下
BatchCode#1
Name,Surname,Address
AA1,BBB,CCC
AA2,BBB,CCC
AA3,BBB,CCC
BatchCode#2
Name,Surname,Address,Phone
XY1,BBB,CCC,DDD
XY2,BBB,CCC,DDD
XY3,BBB,CCC,DDD
在讀取記錄時,我們需要注意標頭以及各節之間的文件格式可能不同。 BatchCode信息需要從標題中提取,並且應該是該節中每個記錄的一部分-例如,第1行的數據應解析為:
Name: AAA1
Surname: BBB
Address:CCC
BatchCode:1
我想到以下選項,但我不確定是否會造成重大問題:
即使上述方法可行,它們是否有效? 什么是最有效的方法?
我只為較復雜的用例編寫了Scala程序,從而保證了順序性。 否則太難了。 如果首先從xls或xlsx發出文件,則通過csvkit處理文件。
以下程序對我有用:
JavaPairRDD<String, PortableDataStream> binaryFiles = sc.binaryFiles(file);
PortableRecordReader reader = new PortableRecordReader();
JavaPairRDD<String, Record> fileAndLines = binaryFiles.flatMapValues(reader);
PortableRecordReader在其中打開DataInputStream並將其轉換為InputStreamReader,然后使用CSV解析器將這些行轉換為Record對象中的預期輸出,並合並標頭。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.