当前位置: 首页 > 知识库问答 >
问题:

在DataFrame联合后管理Spark分区

鲍飞星
2023-03-14
// How many partitions will unionedDF have?
// X * Y ?
// Something else?
val unionedDF : DataFrame = dfA.unionAll(dfB)
val unionedDF : DataFrame = dfA.unionAll(dfB)
unionedDF.repartition(optimalNumberOfPartitions).persist(StorageLevel.MEMORY_AND_DISK)

共有1个答案

江凯风
2023-03-14

是的,分区对Spark很重要。

我想知道你是否可以通过打电话来自己发现:

yourResultedRDD.getNumPartitions()

我必须坚持吗,后工会?

不是真的。这是spark非常可爱的地方,因为当您处理bigdata时,您不希望不必要的东西存在内存中,因为这将威胁到应用程序的安全。

DataFrame可以存储在spark为您创建的临时文件中,并且仅在需要时才加载到应用程序的内存中。

要了解更多信息,请阅读:我应该始终缓存我的RDD和数据页吗?

 类似资料:
  • 如何将一个数据帧中的多列(比如3列)组合成一个列(在一个新的数据帧中),其中每一行都成为一个Spark DenseVector?类似于这个线程,但在Java中,有一些下面提到的调整。 我试着用这样的UDF: 然后注册UDF: 其中<code>数据类型<code>为: 当我在一个有3列的数据帧上调用这个UDF并打印出新数据帧的模式时,我得到如下结果: 这里的问题是,我需要一个向量在外部,而不是在结构

  • 基于Spark-Load CSV文件作为数据文件? 我知道可以使用来完成,但理想情况下我不必这样做。 更新信息 看来我得用反勾号通过这条路。

  • 我创建一个数据文件,导入一个大约8MB的csv文件,如下所示: 最后,我打印dataframe的分区数: 答案是2。

  • 提前谢谢。 您好,我正在使用 spark 数据帧和 scala 进行一些数据处理,我有一个要求,我需要从 parquet 文件中读取具有相同数据类型的多个列,即在我的情况下是结构类型,以处理和创建新数据帧具有与结构类型字段相同的架构,即 field1、field2 和 field3,并使用下面显示的所有列示例中的数据填充数据帧。 例如,假设我有3列 我能够使用下面的代码片段从列中读取所有值 上面的

  • 我使用的是Spark 1.5/1.6,我想在DataFrame中执行reduceByKey操作,我不想将df转换为rdd。 每行看起来像,我有多行id1。 我想有这样的东西: 所以,对于每个“id1”,我希望所有记录都列在一个列表中 顺便说一句,我不想将df转换为rdd的原因是,我必须将这个(减少的)数据帧连接到另一个数据帧,并且我正在对连接键进行重新分区,这使得它更快,我想rdd也不能这样做 任