这是我的数据帧:
底层RDD有2个分区
当我执行df.rdd.count时,生成的DAG是:
问:Count是spark中的一个动作,官方定义是'返回DataFrame中的行数'.现在,当我对数据帧执行计数时,为什么会发生洗牌?此外,当我在底层RDD上做同样的事情时,不会发生随机播放.
对我来说无论如何都会发生洗牌是没有意义的.我试图通过这里的计数源代码来解决spark github 但它对我来说没有任何意义."groupby"是否被提供给行动的罪魁祸首?
PS.df.coalesce(1).count不会导致任何混乱
我发现 blaze 生态系统*很棒,因为它涵盖了大多数数据工程用例。在 2015-2016 年期间,这些项目肯定引起了很多兴趣,但最近却被忽视了。我说这是查看 github 存储库上的提交。
所以我对社区的问题是
火焰生态系统:
参考资料:http : //blaze.pydata.org/
我试图从使用自联接的表中获取最新记录.它可以使用spark-sql但不能使用spark DataFrameAPI.
有人可以帮忙吗?这是一个错误吗?
我在本地模式下使用Spark 2.2.0
创建输入DataFrame:
scala> val df3 = spark.sparkContext.parallelize(Array((1,"a",1),(1,"aa",2),(2,"b",2),(2,"bb",5))).toDF("id","value","time")
df3: org.apache.spark.sql.DataFrame = [id: int, value: string ... 1 more field]
scala> val df33 = df3
df33: org.apache.spark.sql.DataFrame = [id: int, value: string ... 1 more field]
scala> df3.show
+---+-----+----+
| id|value|time|
+---+-----+----+
| 1| a| 1|
| 1| aa| 2|
| 2| b| 2|
| 2| bb| 5|
+---+-----+----+
scala> df33.show
+---+-----+----+
| id|value|time|
+---+-----+----+
| 1| a| 1|
| 1| aa| 2| …Run Code Online (Sandbox Code Playgroud)