Ich bin ziemlich neu im PySpark, obwohl häufiger Benutzer von Pandas usw. < /p>
Ich habe einen Spark -Datenrahmen, der aus Spalten besteht: ID, Trajektorie, Typ < /p>
wobei die ID eine Ganzzahl ist, Trajektorie ist eine Liste von Datenframe-Reihen, die die Koordinateninformation enthalten, und der Typ ist eine Liste von Zeichenfolgen < /p>
Das Ziel ist zu, Zeichnen Sie für jede ID eine Polylinie in einer Python-Folium-Map, basierend auf den Koordinaten in der Trajektorienspalte. >
Row(ID=209223000, Trajectory=[Row(Timestamp=datetime.datetime(2024, 11, 1, 2, 58, 29), Latitude=55.108018, Longitude=18.306343, Destination='Unknown'), Row(Timestamp=datetime.datetime(2024, 11, 1, 6, 18, 18), Latitude=55.115625, Longitude=18.103083, Destination='Unknown')], types=['Undefined'])
< /code>
Um klar zu sein, muss ich keinen zusätzlichen Spalte zum DataFrame hinzufügen, und keine Einwände, wenn dies erforderlich ist. < /p>
Also würde der Pseudo etwas aussehen, das das ist: < /p>
create map-object m
For each Row in df:
create polyline object ply
ply.coordinates = [item.Lat,item.Long] for item in Row['Trajectory']
ply.tooltip = Row['ID'] + Row[types]
add ply to m
< /code>
Das Endziel besteht darin, die Spuren von Objekten zu präsentieren, abhängig von bestimmten Filtern, die im DataFrame < /p>
angewendet werden. Der beschriebene Pseudocode, aber ich kann meinen Kopf nicht darum einwickeln, wie man den UDF anwendet, da ein UDF eher auf eine Spalte als auf einen Datenrahmen angewendet wird. Polylines zum MAP-Objekt basierend auf jeder Zeile des Datenrahmens, z. Jede einzelne ID.|-- ID: integer (nullable = true)
|-- Trajectory: array (nullable = false)
| |-- element: struct (containsNull = false)
| | |-- Timestamp: timestamp (nullable = true)
| | |-- Latitude: double (nullable = true)
| | |-- Longitude: double (nullable = true)
| | |-- Destination: string (nullable = true)
|-- types: array (nullable = false)
| |-- element: string (containsNull = false)
< /code>
Ein Snapshot (komprimiert) der Daten: < /p>
+---------+--------------------+--------------------+
| ID | Trajectory| types|
+---------+--------------------+--------------------+
|209223000|[{2024-11-01 02:5...| [Undefined]|
|209508000|[{2024-11-01 08:2...| [Tanker, Undefined]|
|209864000|[{2024-11-01 14:4...|[Passenger, Undef...|
|210095000|[{2024-11-01 08:2...|[Passenger, Undef...|
|210350000|[{2024-11-01 00:0...| [Undefined]|
+---------+--------------------+--------------------+
Ich bin ziemlich neu im PySpark, obwohl häufiger Benutzer von Pandas usw. < /p> Ich habe einen Spark -Datenrahmen, der aus Spalten besteht: ID, Trajektorie, Typ < /p> wobei die ID eine Ganzzahl ist, Trajektorie ist eine Liste von Datenframe-Reihen, die die Koordinateninformation enthalten, und der Typ ist eine Liste von Zeichenfolgen < /p> Das Ziel ist zu, Zeichnen Sie für jede ID eine Polylinie in einer Python-Folium-Map, basierend auf den Koordinaten in der Trajektorienspalte. >[code]df.first()[/code] erzeugt das folgende Ergebnis [code]Row(ID=209223000, Trajectory=[Row(Timestamp=datetime.datetime(2024, 11, 1, 2, 58, 29), Latitude=55.108018, Longitude=18.306343, Destination='Unknown'), Row(Timestamp=datetime.datetime(2024, 11, 1, 6, 18, 18), Latitude=55.115625, Longitude=18.103083, Destination='Unknown')], types=['Undefined']) < /code> Um klar zu sein, muss ich keinen zusätzlichen Spalte zum DataFrame hinzufügen, und keine Einwände, wenn dies erforderlich ist. < /p> Also würde der Pseudo etwas aussehen, das das ist: < /p> create map-object m
For each Row in df: create polyline object ply ply.coordinates = [item.Lat,item.Long] for item in Row['Trajectory'] ply.tooltip = Row['ID'] + Row[types] add ply to m < /code> Das Endziel besteht darin, die Spuren von Objekten zu präsentieren, abhängig von bestimmten Filtern, die im DataFrame < /p> angewendet werden. Der beschriebene Pseudocode, aber ich kann meinen Kopf nicht darum einwickeln, wie man den UDF anwendet, da ein UDF eher auf eine Spalte als auf einen Datenrahmen angewendet wird. Polylines zum MAP-Objekt basierend auf jeder Zeile des Datenrahmens, z. Jede einzelne ID.|-- ID: integer (nullable = true) |-- Trajectory: array (nullable = false) | |-- element: struct (containsNull = false) | | |-- Timestamp: timestamp (nullable = true) | | |-- Latitude: double (nullable = true) | | |-- Longitude: double (nullable = true) | | |-- Destination: string (nullable = true) |-- types: array (nullable = false) | |-- element: string (containsNull = false) < /code> Ein Snapshot (komprimiert) der Daten: < /p> +---------+--------------------+--------------------+ | ID | Trajectory| types| +---------+--------------------+--------------------+ |209223000|[{2024-11-01 02:5...| [Undefined]| |209508000|[{2024-11-01 08:2...| [Tanker, Undefined]| |209864000|[{2024-11-01 14:4...|[Passenger, Undef...| |210095000|[{2024-11-01 08:2...|[Passenger, Undef...| |210350000|[{2024-11-01 00:0...| [Undefined]| +---------+--------------------+--------------------+ [/code]
Ich habe eine Winui3 -Anwendung, die drei Grenzen hat und ich möchte reagieren. Wenn die Fenstergröße weniger als 600 beträgt, befinden sich die Grenzen in einer Spalte und größer als die Grenzen in...
Ich habe eine Winui3 -Anwendung, die drei Grenzen hat und ich möchte reagieren. Wenn die Fenstergröße weniger als 600 beträgt, befinden sich die Grenzen in einer Spalte und größer als die Grenzen in...
Ich versuche, eine JSON-Datei, die ich von einer API-Anfrage erhalte, als Snowflake-Tabelle zu speichern
Ich habe eine UDF erstellt und kann die Antwortdaten abrufen Über die API habe ich versucht,...
Ich lese das Buch Spark: „The Definitive Guide: Big Data Processing Made Simple“, das 2018 herauskam, und jetzt schreiben wir das Jahr 2023. In dem Buch wurde also erwähnt, dass die Verwendung von...