私は私が参加し、その後選択しています2つのデータフレーム
val d1 = spark.range(3).withColumn("columnName", lit("d1"))
scala> d1.printSchema
root
|-- id: long (nullable = false)
|-- columnName: string (nullable = false)
val d2 = spark.range(3).withColumn("columnName", lit("d2"))
scala> d2.printSchema
root
|-- id: long (nullable = false)
|-- columnName: string (nullable = false)
を持っています。 データフレームの1つの特定の列を選択したいとします。しかし、同じ列名が他の列名に存在します。
val q1 = d1.as("d1")
.join(d2.as("d2"), Seq("id"), "left")
.select("d1.columnName")
scala> q1.show
+----------+
|columnName|
+----------+
| d1|
| d1|
| d1|
+----------+
あなたはそれだけで動作します見ることができるように。
なぜ、それはあなたのために機能しませんでしたか?それぞれを分析しましょう。
// you started very well
d1.as("d1")
// but here you used $ to reference a column to join on
// with column references by their aliases
// that won't work
.join(d2.as("d2"), $"d1.id" === $"d2.id", "left")
// same here
// $ + aliased columns won't work
.select($"d1.columnName")
PROTIP:使用d1("columnName")
は、データフレーム内の特定の列を参照します。
他のクエリ
は細かいことは非常に近かったが、...
d1.join(d2, d1("id") === d2("id"), "left") // <-- so far so good!
.select($"d1.columnName") // <-- that's the issue, i.e. $ + aliased column
あなたは_言ったとき、「それは動作しません。」_、エラー/例外は何ですか? –