装饰 SparkContext textFile 过滤行的结果

Posted

技术标签:

【中文标题】装饰 SparkContext textFile 过滤行的结果【英文标题】:Decorating the result of SparkContext textFile filtered lines 【发布时间】:2016-11-07 09:06:36 【问题描述】:

使用pyspark,我需要按用户号过滤一个SNS服务的几个日常访问日志文件。然后,通过按用户编号对结果进行分组来美化结果。这是python脚本的一部分,它使用一组用户编号提取用户访问日志:

def is_user_log(line):
    return any(userno in line for userno in userno_array)
sc = SparkContext(appName="<app_name>")
text_file = sc.textFile(hdfs_url)
lines = text_file.filter(is_user_log)

现在我通过调用lines.collect()获得了我感兴趣的访问日志,但我需要在这里做的是按用户编号对结果进行分组。具体来说,当 Spark 捕捉到我感兴趣的行时,我希望它在行中添加一些单词。可以用pyspark吗?

【问题讨论】:

【参考方案1】:

您可以只使用map 转换:

def extract_data(line):
    # here you write code to extract data
    # that may use regular expressions
    return line + extracted_data

lines.map(extract_data)

【讨论】:

感谢您的提示。但是“一些词”必须逐行不同,例如捕获该行的用户号。

以上是关于装饰 SparkContext textFile 过滤行的结果的主要内容,如果未能解决你的问题,请参考以下文章

spark textFile读取多个文件

Spark:sc.textFiles() 与 sc.wholeTextFiles() 的区别

spark

Spark学习:RDD编程

SparkSQL的执行计划详解

2RDD编程