Nicht unterstützte literal-Typ-Klasse in Apache Spark in scala

Habe ich folgende Daten:

    +---------------+-----------+-------------+-----+------+
    |   time_stamp_0|sender_ip_1|receiver_ip_2|count|attack|
    +---------------+-----------+-------------+-----+------+
    |06:10:55.881073|   10.0.0.3|     10.0.0.1|   1 |     0|
    |06:10:55.881095|   10.0.0.3|     10.0.0.1|   2 |     0|
    |06:10:55.881114|   10.0.0.3|     10.0.0.1|   3 |     0|
    |06:10:55.881133|   10.0.0.3|     10.0.0.1|   4 |     0|
    |06:10:55.881152|   10.0.0.3|     10.0.0.1|   5 |     0|
    |06:10:55.881172|   10.0.0.3|     10.0.0.1|   6 |     0|
    |06:10:55.881191|   10.0.0.3|     10.0.0.1|   7 |     0|
    |06:10:55.881210|   10.0.0.3|     10.0.0.1|   8 |     0|

Muss ich vergleichen Sie die Gesamt-Standardabweichung auf Spalte "Anzahl" mit sich selbst (mit count-Spalte) in meinem dataframe. Hier ist mein code:

val std_dev=Dataframe_addcount.agg(stddev_pop($"count"))

val final_add_count_attack = Dataframe_addcount.withColumn("attack", when($"count" > std_dev , 0).otherwise(1))

Aber mein problem ist, dass, bekam ich die folgende Fehlermeldung:

Unsupported literal type class org.apache.spark.sql.Dataset [stddev_pop(count): double]

Könnten Sie mir helfen? Vielen Dank.

  • In meinem Fall ist es, weil ich sammeln und nicht bemerken, dass ich ein array von Zeilen-Objekte eher als ein array von Strings. Sie können nicht verwenden Sie das Ergebnis sammeln Sie in einer where-Klausel einen Daten-frame, es sei denn, Sie wickeln Sie die Werte.
InformationsquelleAutor Queen | 2017-06-28
Schreibe einen Kommentar