让我们说我创建了一个如下创建的DF
val posts = spark.read
.option("rowTag","row")
.option("attributePrefix","")
.schema(Schemas.postSchema)
.xml("src/main/resources/Posts.xml")
与posts.select("Id")
相比,使用posts.select($"Id")
将其转换为列的好处是什么?
答案 0 :(得分:2)
没有特别的优势,无论如何它都是自动转换。但并非SparkSQL中的所有方法都执行此转换,因此有时您必须将Column对象放入$。
答案 1 :(得分:2)
df.select
直接在列上操作,而$"col"
创建列实例。您也可以使用col
函数创建Column实例。现在,可以将Columns组合起来以形成复杂的表达式,然后可以将这些表达式传递给任何df函数。
您还可以在Column类的Scaladoc上找到示例和更多用法。
Ref-https://spark.apache.org/docs/2.2.0/api/scala/index.html#org.apache.spark.sql.Column
答案 2 :(得分:1)
差别不大,但是某些功能只能使用带有列名的$
来使用。
示例:如果我们要在此列中对值进行排序,而不在列名之前使用$
,则它将不起作用。
Window.orderBy("Id".desc)
但是,如果您在列名之前使用$
,则可以使用。
Window.orderBy($"Id".desc)