У меня есть набор данных с 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
Я хотел отсортировать по кол-ву описаний