Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 调用dataframe.distinct()是否会导致将内容洗牌到驱动程序以获得最终的区别?_Scala_Apache Spark_Dataframe_Databricks - Fatal编程技术网

Scala 调用dataframe.distinct()是否会导致将内容洗牌到驱动程序以获得最终的区别?

Scala 调用dataframe.distinct()是否会导致将内容洗牌到驱动程序以获得最终的区别?,scala,apache-spark,dataframe,databricks,Scala,Apache Spark,Dataframe,Databricks,我有下面的代码,它尝试读取一些json,区分它们,并将输出写入单个json文件。我的问题是,我应该在.distinct()之后.collect(),还是在幕后发生 val manyJsons = sqlContext.read.json(someJsonDirectory) val distinctJsons = manyJsons.distinct() distinctJsons.coalesce(1).write.json(jsonDirectoryWithOneFile) 如果要写入磁盘

我有下面的代码,它尝试读取一些json,区分它们,并将输出写入单个json文件。我的问题是,我应该在
.distinct()
之后
.collect()
,还是在幕后发生

val manyJsons = sqlContext.read.json(someJsonDirectory)
val distinctJsons = manyJsons.distinct()
distinctJsons.coalesce(1).write.json(jsonDirectoryWithOneFile)

如果要写入磁盘中的文件,则不需要
.collect()

.distinct()
洗牌
数据以查找
重复项
删除重复项

代码中的
.coalesce(1)
在写入文件之前将所有
分区
移动到一个节点。这相当于
.collect(
)。唯一的区别是
.collect()
会将所有分区移动到
驱动程序节点
,但是
.coalesce
可能会也可能不会将所有分区移动到
驱动程序节点
.coalesce(1)
用于创建一个分区,以便输出文件仅为一个