一些字符串我有火花和Scala工作,看到在在線文檔
df.select($"name", $"age" + 1).show()
下面是什麼$「名」的意思是在這裏嗎?
一些字符串我有火花和Scala工作,看到在在線文檔
df.select($"name", $"age" + 1).show()
下面是什麼$「名」的意思是在這裏嗎?
這不是一個斯卡拉的事情。
scala> val name = "something"
name: String = something
scala> println($"name")
<console>:12: error: value $ is not a member of StringContext
println($"name")
^
寧可火花的事情,這似乎represent a column。
見org.apache.spark.sql.SQLImplicits代碼在這裏,
implicit class StringToColumn(val sc: StringContext) {
def $(args: Any*): ColumnName = {
new ColumnName(sc.s(args: _*))
}
}
你可以簡單地做dataframe.select("columnname").show
或dataframe.select(col("columnname")).show
過,但dataframe.select($"columnname")
變異的列值,就像你在你的例子遞增的年齡。
例如。
給出一個數據幀,
+----+-------+
| age| name|
+----+-------+
|null|Michael|
| 30| Andy|
| 19| Justin|
+----+-------+
scala> dataframe.select($"name".as('myname)).show()
+-------+
| myname|
+-------+
|Michael|
| Andy|
| Justin|
+-------+
scala> dataframe.select("age"+1).show()
org.apache.spark.sql.AnalysisException: cannot resolve '`age1`' given input columns: [age, name];;
'Project ['age1]
其他例如使用$
可以基於列的值是過濾器,
dataframe.filter($"age" > 28).show()
所以,基本上,你這是它(Column
類型)的變量與Spark中的$""
。
Scala有${}
而串聯變量,(又名String interpolation
)
scala> val printMe = "prayagupd"
printMe: String = prayagupd
scala> println(s"value = $printMe")
value = prayagupd
高超的解釋。非常感謝 – user373201
http://docs.scala-lang.org/overviews/core/string-interpolation.html –
這個問題是不是重複另一個。 – puhlen
他們都在問''''符號的作用,並且_both_會誤解它是Scala語法而不是Spark方法。 –