Spark在csv文件python的所有行之间查找特定字符串

时间:2017-10-10 20:12:32

标签: python apache-spark pyspark

我正在使用pyspark,我有一个大的csv文件。 csv文件有多行

<ABCosmswkmwPQR>
<ABCasdfasdfadsPQR>
 ...
 ...

我需要遍历每一行并找到其中特定字符串之间的文本。我正在使用正则表达式来做到这一点

text_file = sc.textFile("file:///path/subset.tsv")
s = text_file.first()
conf = SparkConf().setAppName('MyFirstStandaloneApp')
links = re.findall(r'ABC(.*?)\PQR', s)


sc = SparkContext(conf=conf)

但我只能在第一行才能这样做。我如何为该行的所有文件执行此操作。我需要逐行迭代并将匹配的正则表达式的输出写入列表(如果它适合内存或文件)。

我已经使用sparkcontext打开了文件,我必须这样做,因为我必须从HDFS读取文件。

2 个答案:

答案 0 :(得分:1)

尝试这样的事情:

read_lines = open("file.csv", "r")
for line in read_lines:
    #if line matches regex:
        #do something

read_lines读取整个文件,for循环将遍历文件中的每一行。你只需要插入正则表达式代码。

答案 1 :(得分:0)

您可以使用模块regexp_extract中的pyspark.sql.functions。 如果您的文件是temp.csv

spark.createDataFrame(sc.textFile("temp.csv"), schema=StringType()).
                        select(regexp_extract(regexpattern, col, idx)