gpt4 book ai didi

scala - scala中$ some string的输出是什么

转载 作者:行者123 更新时间:2023-12-04 23:15:54 26 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





What does dollar sign do in scala

(2 个回答)


5年前关闭。




我正在使用 spark 和 scala 并在在线文档中看到以下内容

df.select($"name", $"age" + 1).show()

$"name"在这里是什么意思?

最佳答案

这不是斯卡拉的事情。

scala> val name = "something"
name: String = something

scala> println($"name")
<console>:12: error: value $ is not a member of StringContext
println($"name")
^

而是 Spark 的东西,这似乎是 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").showdataframe.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 。

斯卡拉有 ${}在连接变量时,(又名 String interpolation )
scala> val printMe = "prayagupd"
printMe: String = prayagupd

scala> println(s"value = $printMe")
value = prayagupd

关于scala - scala中$ some string的输出是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42427388/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com