【发布时间】:2016-12-17 20:32:54
【问题描述】:
下面的程序会报错
from pyparsing import Regex, re
from pyspark import SparkContext
sc = SparkContext("local","hospital")
LOG_PATTERN ='(?P<Case_ID>[^ ;]+);(?P<Event_ID>[^ ;]+);(?P<Date_Time>[^ ;]+);(?P<Activity>[^;]+);(?P<Resource>[^ ;]+);(?P<Costs>[^ ;]+)'
logLine=sc.textFile("C:\TestLogs\Hospital.log").cache()
#logLine='1;35654423;30-12-2010:11.02;register request;Pete;50'
for line in logLine.readlines():
match = re.search(LOG_PATTERN,logLine)
Case_ID = match.group(1)
Event_ID = match.group(2)
Date_Time = match.group(3)
Activity = match.group(4)
Resource = match.group(5)
Costs = match.group(6)
print Case_ID
print Event_ID
print Date_Time
print Activity
print Resource
print Costs
错误:
Traceback(最近一次调用最后一次):文件 “C:/Spark/spark-1.6.1-bin-hadoop2.4/bin/hospital2.py”,第 7 行,在 对于 logLine.readlines() 中的行:AttributeError: 'RDD' object has no attribute 'readlines'
如果我添加 open 函数来读取文件,则会收到以下错误:
Traceback(最近一次调用最后一次):文件 “C:/Spark/spark-1.6.1-bin-hadoop2.4/bin/hospital2.py”,第 7 行,在 f = open(logLine,"r") TypeError: coercing to Unicode: need string or buffer, RDD found
似乎无法弄清楚如何逐行阅读并提取与模式匹配的单词。
此外,如果我只通过一个日志行logLine='1;35654423;30-12-2010:11.02;register request;Pete;50' 它可以工作。我是新手,只知道 python 的基础知识。请帮忙。
【问题讨论】:
标签: python apache-spark pyspark