In [18]:
fileName='book.txt'
Ahora vamos a eliminar todo aquello que no se consideren cadenas de texto válidas. Para ello definiremos una función que elimine aquello que no queremos contabilizar.
In [19]:
import re
def removePunctuation(text):
return re.sub('[^a-z| |0-9]', '', text.strip().lower())
Ahora vamos a crear el primer RDD del contenido del libro.
In [21]:
shakespeareRDD = (sc
.textFile(fileName, 8)
.map(removePunctuation))
In [22]:
shakespeareRDD.take(4)
Out[22]:
In [23]:
print '\n'.join(shakespeareRDD
.zipWithIndex() # to (line, lineNum)
.map(lambda (l, num): '{0}: {1}'.format(num, l)) # to 'lineNum: line'
.take(15))
In [25]:
shakespeareWordRDD=shakespeareRDD.flatMap(lambda x: x.split(' '))
In [26]:
shakespeareWordCount=shakespeareWordRDD.count()
In [27]:
print shakespeareWordCount
In [28]:
print shakespeareWordRDD.take(10)
A continuación vamos a detectar cual es la palabra que más veces aparece en el texto. Generaremos un ranking de las 10 más numerosas para que se vea parte del poder de spark.
In [32]:
ranking= shakespeareWordRDD.map(lambda x: (x,1)).reduceByKey(lambda y,z: y+z).takeOrdered(10,lambda x : -x[1])
In [34]:
print ranking