javamap-Reduce分割方法
假设我们有一个.csv文件,如下所示:javamap-Reduce分割方法,java,split,mapreduce,Java,Split,Mapreduce,假设我们有一个.csv文件,如下所示: Country,num1,num2,remarks USA, 1, 1, string 1 USA, 1, 2, "string 2, string 3, string 1" USA, string 1 USA, string 2 USA, string 3 USA, string 1 我需要拆分每一行,以执行Map Reduce任务。 您可以看到的“问题”是,如果备注字段中有逗号,则提供者 在字符串周围插入双引号(当我用文本编辑器打开文件时可以看到双
Country,num1,num2,remarks
USA, 1, 1, string 1
USA, 1, 2, "string 2, string 3, string 1"
USA, string 1
USA, string 2
USA, string 3
USA, string 1
我需要拆分每一行,以执行Map Reduce任务。
您可以看到的“问题”是,如果备注字段中有逗号,则提供者
在字符串周围插入双引号(当我用文本编辑器打开文件时可以看到双引号)。
有没有办法将备注字段分开
我的最终目的是创建具有以下值的键:
Country,num1,num2,remarks
USA, 1, 1, string 1
USA, 1, 2, "string 2, string 3, string 1"
USA, string 1
USA, string 2
USA, string 3
USA, string 1
假设我有一个名为line的变量,它包含整行字符串,
我试过这样的方法:
String [] temp;
temp = line.split(",");
但在这种情况下,temp[3]的值为string 2
,而不是值
string 2, string 3, string 1
经过长时间的搜索,我发现了一个类似的问题
在实践中,应使用此正则表达式:
String[]tokens=line.split(“,(?=(?:[^\”]*\“[^\”]*\”*[^\“]*$)”,-1);
为了考虑<代码>“字符串2、字符串3、字符串1”<代码>作为特定字段。
感谢社区!使用合适的CSV阅读器和
String.split(“,”)
备注字段?在上拆分,
是poorsman CSV解析器,对于复杂数据肯定会失败。使用现有的CSV解析库。不值得为标准数据交换格式重新发明轮子。您可以选择使用电子表格编辑器打开CSV文件,将其保存为以制表符分隔的文件,然后将制表符用作使用分隔符而不是逗号