我有几个.gz格式的文本文件。现在我在pyspark脚本中运行此代码:
with gzip.open(filepath, 'rb') as f:
file_content = f.read().decode('utf-8')
Func_that_does_regex(file_content)
正则表达式不起作用(没有错误但没有产生正确的输出),并且因为代码是在spark worker上执行的,所以我不知道如何调试它。但是,如果我解压缩一个文件然后手动复制将内容粘贴到一个新的文本文件(通过leafpad)并再次gzip它,常规expresion工作。如果我通过pyspark打印字符串的块.take()将原始字符串中的两个字符串和新文件'看起来'相同。我错过了什么?
Python 3.5和Spark 2.0.1
答案 0 :(得分:0)
发布的内容与不同操作系统如何处理字符串中的新行有关。在我只使用Linux创建的文件之前,所以\ n在正则表达式中就足够了。我现在使用的文件\ r \ n用于新行,因此我的正则表达式不再有效!
\ r = CR(回车)//在X
之前用作Mac OS中的新行字符\ n = LF(换行)//在Unix / Mac OS X中用作新行字符
\ r \ n = CR + LF //用作Windows中的新行字符