我有一个使用Python的Spark(1.3.1)应用程序,在YARN,EMR集群上运行并使用类似S3的存储。
我的应用程序在RDD中转换CSV文件并执行正则表达式转换(ETL)。
我们需要创建一个级别行日志解决方案,以便捕获错误并识别源问题(记录和列)。
我对此一无所知。
def lineMap(column):
return (
column[1],
column[2]
)
fileContent = sc.textFile(s3FilePathInput)
RDDcru = (fileContent
.map(lambda x : x.split(";"))
.map(lineMap)
)
我尝试使用logging default python lib在lineMap函数上创建一个try-catch块。 我也尝试过,创建一个新的SparkContext,在S3上写一个文件日志(在catch块上)
全部失败......
感谢和抱歉我的英语不好:)
答案 0 :(得分:0)
此案例的解决方案是创建一个新的日志字段。
def etl_func(col,log):
try:
(code)
except Exception,e:
log.append(str(e))
def lineMap(column):
log = []
return (
etl_func(column[1],log),
column[2],
log
)