Version: 5. félév

1. ZH

Feladatok#

1. kérdés#

A kmerInput.txt az E. coli baktérium genomjának egy részét tartalmazza (A, T, G és C karakterek sorozata). A feladat egy k-mer számoló program elkészítése. A bioinformatikában k-mer-nek nevezzük a k karakter hosszú részsztringeket. Pl: A “AGCTTTTC” 3-mer-ei a következők: AGC, GCT, CTT, TTT, TTT, TTC. Ez alapján a TTT 3-mer kétszer szerepel, míg a többi csak egyszer.

Készítsen egy programot, amely összeszámolja és kiírja a kmerInput.txt k-mer-eit, amelyek megfelelnek a következő feltételnek:

  • A k szám értéke legyen: 2
  • A k-mer tartalmazza az “C” karaktert, de nem tartalmazza a “G” karaktert
  • A k-mert legalább 6-szer előfordul a fájlban.

(Megjegyzés: a k-mer-ek elkészítésekor elég csak az adott sort vizsgálni, azaz nem kell egy sor utolsó karakterét összefűzni a rákövetkező sor első karaktereivel.)

Driver#

Reducer#

Mapper#

2. kérdés#

Az oscar_age_male.csv a férfi oszkár-díj nyerteseit tartalmazza.
A csv oszlopai: sorszám, év, életkor, név, film.
Írjunk spark programot, amely megadja hogy melyik évben született a legtöbb oscar-díjas színesz. (szulido: oscardij eve - eletkor)

def getYear(line):
return str(int(line.split(",")[1])-int(line.split(",")[2]))
sc.textFile("oscar_age_male.csv")\
.filter(lambda line: line!="")\
.map(getYear)\
.map(lambda y: (y,1))\
.reduceByKey(lambda a,b: a+b)\
.sortBy(lambda x: x[1], False)\
.take(1)

3. kérdés#

A sentiment_input.txt minden sora egy-egy szöveges értékelése a Tenet című filmnek (forrás: imdb.com). A feladat célja megszámolni, hány darab pozitív, negatív és semleges értékelés található a fájlban.

Egy értékelés akkor pozitív, ha a szövegben több pozitív szó található mint negatív.
Egy értékelés akkor negatív, ha több a negatív szó, mint a pozitív.
Egy értékelés akkor semleges, ha a pozitív és negatív szavak száma megegyezik.

A pozitív és negatív szavak listája:

  • Pozitív szavak: great, masterpiece, awesome, enjoyable
  • Negatív szavak: garbage, worst, bad, boring

Egy lehetséges kimenet: (‘positive’, 10), (‘negative’, 9), (‘neutral’, 4)

pos_words = ['great', 'masterpiece', 'awesome', 'enjoyable']
neg_words = ['garbage', 'worst', 'bad', 'boring']
pos_count = sc.accumulator(0)
neg_count = sc.accumulator(0)
neu_count = sc.accumulator(0)
def measLine(line):
pos = 0
neg = 0
for word in line.split(" "):
if word in pos_words:
pos +=1
elif word in neg_words:
neg +=1
if pos>neg:
return 1
elif neg>pos:
return -1
else:
return 0
def countSentiment(i):
if i==1:
pos_count.add(1)
elif i==-1:
neg_count.add(1)
elif i==0:
neu_count.add(1)
sc.textFile("sentiment_input.txt")\
.map(measLine)\
.foreach(countSentiment)

ZH Fájlok#

Last updated on