2017-05-29 7 views
1

In Spark, bin ich gruppiert von einem Food Inspection Data Set auf den Namen des Restaurants. Im folgenden Beispiel ist es "ZED 451". Der Schlüssel ist also "ZED 451" und der Wert ist eine Liste aller Inspektionen in Bezug auf dieses Restaurant.verschachtelte Gruppe von in pyspark

(u'ZED 451', [(u'1975848', u'ZED 451', u'ZED 451', u'729-743 N CLARK ST ', u'60654', u" u'41.89574704893414'", u" u'-87.6310791667675'"), (u'1609466', u'ZED 451', u'ZED 451', u'729-743 N CLARK ST ', u'60654', u" u'41.89574704893414'", u" u'-87.6310791667675'"), (u'1139101', u'ZED 451', u'ZED 451', u'729-743 N CLARK ST ', u'60654', u" u'41.89574704893414'", u" u'-87.6310791667675'"), (u'114380', u'ZED 451', u'ZED 451', u'729-743 N CLARK ST ', u'60654', u" u'41.89574704893414'", u" u'-87.6310791667675'")]) 

Jetzt versuche ich eine sekundäre Gruppe von auf dieser nach Datensatz gruppiert. Die zweite Gruppe, die ich machen möchte, ist lat und long, um die Zweige von "ZED 451" zu identifizieren, die gleich sind. Ich habe alle möglichen Methoden ausprobiert, um eine zweite Gruppe zu bilden, aber ohne Erfolg. Jede Hilfe, wie Sie damit fortfahren können, ohne Spark SQL oder Spark DataFrames zu verwenden, wird geschätzt.

PS: Ich würde meine ausgeben möchten wie folgt aussehen:

(u'ZED 451', [(u'41.89574704893414', u'-87.6310791667675'", [(u'1975848', u'ZED 451', u'ZED 451', u'729-743 N CLARK ST ', u'60654'), (u'1609466', u'ZED 451', u'ZED 451', u'729-743 N CLARK ST ', u'60654'), (u'1139101', u'ZED 451', u'ZED 451', u'729-743 N CLARK ST ', u'60654'), (u'114380', u'ZED 451', u'ZED 451', u'729-743 N CLARK ST ', u'60654')])] 

In diesem Fall werden alle Instanzen von Restaurants auf der gleichen Branche zeigen, so gibt es eine lat und lange Schlüssel und es Wert ist eine Liste von all diesen Instanzen. Aber in anderen Einträgen existieren mehrere Zweige mit mehreren Lat's und Longs.

Vielen Dank für Ihre Hilfe!

+0

Nach der ersten groupBy, anstatt einer zweiten groupBy, wie wäre es mit mapValues? Array [Restaurant] -> Array [(lang, lat, Array [Restaurant])]. Nur ein Gedanke – SiLaf

Antwort

0

groupBy (Name, lang, lat). Dann groupBy name

Verwandte Themen