Spark das Hinzufügen einer Spalte, die aus einem Tupel zu einem dataframe

Bin ich mit Spark 1.6 und ich möchten eine Spalte hinzufügen, um ein dataframe. Die neue Spalte ist eigentlich eine Konstante Sequenz: Seq(„-0“, „-1“, „-2“, „-3“)

Hier ist mein original-dataframe:

scala> df.printSchema()

root

|– user_name: string (nullable = true)

|– test_name: string (nullable = true)

df.show()

|user_name| test_name|

+————+——————–+

|user1| SAT|

| user9| GRE|

| user7|MCAT|

Möchte ich hinzufügen, dass diese zusätzliche Spalte (Versuch), so dass die neuen dataframe wird:

|user_name|test_name|attempt|
+------------+--------------------+
|user1| SAT|Seq("-0","-1","-2","-3")|
| user9| GRE|Seq("-0","-1","-2","-3")
| user7|MCAT|Seq("-0","-1","-2","-3")

Wie mache ich das?

  • Durch Seq("0", "-1", "-2", "-3") du meinst ["0", "-1", "-2", "-3"] ?
InformationsquelleAutor user3803714 | 2017-03-23



2 Replies
  1. 2

    können Sie die withColumn Funktion:

     import org.apache.spark.sql.functions._
     df.withColumn("attempt", lit(Array("-0","-1","-2","-3")))
    
    • Obige Lösung wird, geben Sie folgenden Fehler: java.lang.RuntimeException: Unsupported literal type class scala.collection.immutable.$colon$colon List(-0, -1, -2, -3)
    • Sorry, es ist Array statt Seq, änderte ich meine Antwort
  2. 1

    Hinzuzufügen, können Sie mithilfe der typedLit(Spark-version > 2.2).

    import org.apache.spark.sql.functions.typedLit
    df.withColumn("attempt", typedLit(Seq("-0", "-1", "-2", "-3")))
    

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.