我目前正在一个带有Boto包的EMR实例上测试Python脚本。在
该脚本读取名为fileC的文件的每一行,将它们的内容与fileAC中的行的内容进行比较,并将过滤后的行写入单独的文件中。当我比较两个大文件时,我用第三个名为fileA的文件创建了另一个中间过滤器,以获得时间。在
问题如下:在本地机器上测试期间,脚本运行良好,从fileC中过滤出200多行。但是,一旦我用Boto包在AWS上试用,脚本根本不会过滤fileC(p=0,没有显示“found”,行数与fileC相同)。似乎这两个文件fileA和fileAC没有被读取。对于boto,我在函数StreamingStep(“为了将2个文件(fileA和fileAC)分发到每个集群,我在函数”StreamingStep“中使用了“缓存”功能。以前也适用于其他剧本,但现在不行了。有什么想法吗?在
脚本如下:
sys.path.append(os.path.dirname(__file__))
def main(argv):
filenameAC = 'activities.log'
filenameA = 'activitiesCookieCountry.log'
fileC = fileinput.FileInput(sys.argv[1:])
fileA = open(filenameA,'r')
fileAC = open(filenameAC,'r')
fileA = [line.rstrip('\n') for line in fileA]
Alines = set(fileA)
for lineC in fileC:
fieldC = lineC.split('#')
fieldComp = fieldC[0]+'#'+fieldC[2]
p = 0
if fieldComp in Alines:
fileAC.seek(0)
for lineAC in fileAC:
fieldAC = lineAC.split('#')
if (fieldAC[0] == fieldC[0]) and (fieldAC[2] == fieldC[2]) and (fieldAC[1] < fieldC[1]):
p = 1
print('found')
if p == 0:
sys.stdout.write(lineC)
if __name__ == "__main__":
main(sys.argv)
下面是在EMR中运行脚本的脚本:
^{pr2}$我怀疑调用的两个文件不应该这样定义:
^{3}$但我真的不知道还有什么
目前没有回答
相关问题 更多 >
编程相关推荐