gpt4 book ai didi

apache-spark - Spark SQL 中的 DataFrame.select() 和 DataFrame.toDF() 有什么区别

转载 作者:行者123 更新时间:2023-12-04 03:57:45 31 4
gpt4 key购买 nike

似乎他们都返回了一个新的DataFrame

源代码:

def toDF(self, *cols):
jdf = self._jdf.toDF(self._jseq(cols))
return DataFrame(jdf, self.sql_ctx)


def select(self, *cols):
jdf = self._jdf.select(self._jcols(*cols))
return DataFrame(jdf, self.sql_ctx)

最佳答案

区别很微妙。

例如,如果您转换未命名的元组 ("Pete", 22)使用 .toDF("name", "age") 到 DataFrame ,您还可以通过调用 toDF 来重命名数据框再次方法。例如:

scala> val rdd = sc.parallelize(List(("Piter", 22), ("Gurbe", 27)))
rdd: org.apache.spark.rdd.RDD[(String, Int)] = ParallelCollectionRDD[2] at parallelize at <console>:27

scala> val df = rdd.toDF("name", "age")
df: org.apache.spark.sql.DataFrame = [name: string, age: int]

scala> df.show()
+-----+---+
| name|age|
+-----+---+
|Piter| 22|
|Gurbe| 27|
+-----+---+

scala> val df = rdd.toDF("person", "age")
df: org.apache.spark.sql.DataFrame = [person: string, age: int]

scala> df.show()
+------+---+
|person|age|
+------+---+
| Piter| 22|
| Gurbe| 27|
+------+---+

使用 select 您可以选择列,这些列可以在以后用于投影表,或仅保存您需要的列:
scala> df.select("age").show()
+---+
|age|
+---+
| 22|
| 27|
+---+

scala> df.select("age").write.save("/tmp/ages.parquet")
Scaling row group sizes to 88.37% for 8 writers.

希望这可以帮助!

关于apache-spark - Spark SQL 中的 DataFrame.select() 和 DataFrame.toDF() 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41178400/

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