尝试使用mapreduce和python在AWS上使用大数据进行练习。
我有代码
import sys
import re
import csv
import glob
import string
#class MyDialect(csv.Dialect):
#strict = True
#skipinitialspace = False
#quoting = QUOTE_MINIMAL
#delimiter = ','
#quotechar = '"'
for line in sys.stdin:
csv.reader(line, dialect='excel')
#reader = csv.reader(line, delimiter=',', quoting=csv.QUOTE_ALL, quotechar='"')
#line = line.strip()
#unpacked = line.split(",")
try:
#regular expresion
num,title,year,length,budget,rating,votes,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,mpaa,Action,Animation,Comedy,Drama,Documentary,Romance,Short = line.split(",")
if float(rating) <= 1:
results = [votes, rating, title, year]
print("\t".join(results))
except ValueError:
pass
现在我知道这不是完美的输出行值,但每当我尝试使用csv就行了。
&lt; _csv.reader对象位于0x7fc2c184e280&gt;
我所有的台词。
我需要将输入作为一行输出,并将输出输出到标准输出,因为这是一个处理数据并将其传递给reducer的节点。我已经解决了大部分错误,但它不接受带有逗号的标题。所以“布莱尔女巫,”将被跳过,而不会显示在列表中,因为我认为预算成为评级和评级。
关于如何做到这一点的任何想法?
答案 0 :(得分:0)
csv.reader将打开的文件作为其参数,并返回一个读取器对象,该对象将迭代给定csvfile中的行。由于您没有处理csv.reader的返回值,它将打印您看到的行。因此,如果要使用此模块,则需要使用变量来存储阅读器,然后迭代使用该阅读器对象;如果要手动解析文件,则只需删除该行。有关详细信息,请参阅文档:https://docs.python.org/2/library/csv.html
答案 1 :(得分:-1)
好的找到了做这一切的简单方法。如果您是管理员,您可以控制数据,而不是做&#34;,&#34;作为分隔符,使用制表符,你就不会在任何地方遇到逗号问题。除非有大量文本,否则大多数数据库信息都没有标签。
了解您的数据,同时围绕数据运行程序。