我正在使用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读取文件。
答案 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)