Как сделать Group By и отсортировать в Python для mapreducer в hadoop - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть набор данных с 100k строк с 17 столбцами. Я хотел бы знать, как группировать и сортировать в hadoop mapreducer, используя python

вот мой mapper.py

#!/usr/bin/python

import sys


for line in sys.stdin:
    data = line.strip().split(",")
    if len(data) == 17:
        VendorID, tpep_pickup_datetime, tpep_dropoff_datetime, passenger_count, trip_distance, RatecodeID, store_and_fwd_flag, PULocationID, DOLocationID, payment_type, fare_amount, extra, mta_tax, tip_amount, tolls_amount, improvement_surcharge, total_amount = data
    print passenger_count,"\t",PULocationID,"\t", DOLocationID

мой reducer.py

#!/usr/bin/python

import sys

for line in sys.stdin:
    data_mapped = line.strip().split("\t")
    if len(data_mapped) != 3:
        continue

    passenger_count, PULocationID, DOLocationID = data_mapped

    passenger_count = int(passenger_count)

    if passenger_count <2:
        print passenger_count,"\t", PULocationID, "\t", DOLocationID

для запуска mapreducer в hadoop Я использовал этот cmd hadoop jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-streaming.jar -mapper mapper.py -reducer reducer.py -input /user/maria_dev/trim_table.csv -output /user/maria_dev/joboutput1 -file /root/mapper.py /root/reducer.py

вывод моего joboutput 1 161 142 1 170 162 1 233 248 1 68 230 1 237 237 and so on with some duplication and unsorted.

Надеюсь, кто-нибудь может мне помочь. вывод, который я хотел, count|PULocationID|DOLocationID

Я хотел отсортировать по кол-ву описаний

...