Scala 使用“$”有什么好处;col";超过;col";在spark数据帧中
假设我创建了一个DF,如下所示Scala 使用“$”有什么好处;col";超过;col";在spark数据帧中,scala,apache-spark,Scala,Apache Spark,假设我创建了一个DF,如下所示 val posts = spark.read .option("rowTag","row") .option("attributePrefix","") .schema(Schemas.postSchema) .xml("src/main/resources/Posts.xml") 使用posts将其转换为列有什么好处。在posts上选择(“Id”)。选择($“Id”)没有什么特别的好处,它是一种自动转换。但并非SparkSQ
val posts = spark.read
.option("rowTag","row")
.option("attributePrefix","")
.schema(Schemas.postSchema)
.xml("src/main/resources/Posts.xml")
使用
posts将其转换为列有什么好处。在posts上选择(“Id”)
。选择($“Id”)
没有什么特别的好处,它是一种自动转换。但并非SparkSQL中的所有方法都执行此转换,因此有时必须将列对象与$一起放置。df。select
直接对列进行操作,而$“col”
创建列实例。您还可以使用col
函数创建列实例。现在,这些列可以组合成复杂的表达式,然后可以传递给任何df函数
您还可以在Column类的Scaladoc上找到示例和更多用法
Ref-没有太大区别,但某些功能只能使用带有列名的
$
示例:如果要对该列中的值进行排序,而不在列名之前使用$
,则该方法将无法工作
Window.orderBy(“Id.desc)
但是,如果在列名之前使用$
,则它可以工作
Window.orderBy($“Id”.desc)
将它们转换为列类型有什么好处吗?或者在什么情况下我们应该转换它们?就像我说的,当API同时接受列对象和列名时,比如select(),没有任何优势。如果API不接受列名,则需要使用column对象以避免编译错误。