有没有办法让spark读取这种奇怪的文本格式?

我拥有的文件格式有点像csv,看起来像这样(某种形式的abinitio .dat文件):

1,apple,10.00,\n
2,banana,12.35,\n
3,orange,9.23,\n  

逗号实际上是“头开始” 0x01字节字符,但是为了简单起见,我将使用逗号。我可以轻松读取上面的示例,方法是使用自定义行拆分,\n将文件读取为字符串RDD,然后将其传递到spark.read.csv中。我目前正在用,\n分隔行,因为数据中可能会有换行符,并且我认为对于每个记录来说,这两个字符是唯一的。但是,当文本字段的开头有换行符时,就会出现问题。例如:

1,one \n apple,two banana,\n three orange,\n    

我当前的代码可以忽略记录1中的换行符,但是在,\n之后选择3并将3行分成4行。格式?
我目前的想法是:

  1. 在允许分割之前,检查,列定界符的数量是否正确。我不确定如何实现此功能,当spark看到,\n并检查分隔符的正确数量时,是否可以进行正则表达式回溯?
  2. 尝试将文件强制转换为CSV以外的其他格式
  3. 创建自己的InputFormatClass,尽管我不确定这意味着什么。
yyuuzzjj 回答:有没有办法让spark读取这种奇怪的文本格式?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3114759.html

大家都在问