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

Spark-SQl数据帧分区

范振海
2023-03-14

我需要使用 spark-sql 加载一个 Hive 表,然后对其运行一些机器学习算法。我是这样写的:

val dataSet = sqlContext.sql(" select * from table")

它工作得很好,但如果我想增加数据集数据帧的分区数,我该怎么做?使用普通RDD,我可以写:

val dataSet = sc.textFile(" .... ", N )

我想要有N个分区。

谢谢

共有1个答案

夏宪
2023-03-14

您可以合并重新分区生成的DataFrame,即:

val dataSet = sqlContext.sql(" select * from table").coalesce(N)
 类似资料:
  • 有人能解释一下将为Spark Dataframe创建的分区数量吗。 我知道对于RDD,在创建它时,我们可以提到如下分区的数量。 但是对于创建时的Spark数据帧,看起来我们没有像RDD那样指定分区数量的选项。 我认为唯一的可能性是,在创建数据帧后,我们可以使用重新分区API。 有人能告诉我在创建数据帧时,我们是否可以指定分区的数量。

  • 我有以下结构的数据帧: 我想写一个UDF,那个 < li >压缩DF中每列第I个位置的元素 < li >分解每个压缩元组的DF 生成的列应如下所示: 目前,我正在对UDF使用多调用(每个列名一个,在运行时之前收集列名列表),如下所示: 由于dataframe可能有数百列,因此这种对< code>withColumn的迭代调用似乎需要很长时间。 问题:这是否可能与一个UDF和一个<code>DF.w

  • 我正在使用数据帧读取。拼花地板文件,但不是将它们转换为rdd来进行我的正常处理,我想对它们进行处理。 所以我有我的文件: 即使从数据帧转换为RDD,我也会收到以下错误: :26:错误:值zipWithIndex不是组织的成员。阿帕奇。火花sql。一行 任何人都知道如何做我正在尝试做的事情,本质上是尝试获取值和列索引。 我在想这样的事情: 但最后一部分被卡住了,因为不知道如何做zipWithInde

  • 我们有没有可能在Spark中先按一列分区,然后再按另一列聚类? 在我的例子中,我在一个有数百万行的表中有一个< code>month列和一个< code>cust_id列。我可以说,当我将数据帧保存到hive表中,以便根据月份将该表分区,并按< code>cust_id将该表聚类成50个文件吗? 忽略按< code>cust_id的聚类,这里有三个不同的选项 第一种情况和最后一种情况在 Spark

  • 我想了解如何在新的< code>DataFrame api中使用< code>CaseWhen表达式。 我在文档中看不到任何对它的引用,我唯一看到它的地方是在代码中:https://github . com/Apache/spark/blob/v 1 . 4 . 0/SQL/catalyst/src/main/Scala/org/Apache/spark/SQL/catalyst/expressi

  • 我正在查看代码中的一个错误,其中一个数据框被分成了太多的分区(超过700个),当我试图将它们重新分区为48个时,这会导致太多的洗牌操作。我不能在这里使用coalesce(),因为我想在重新分区之前首先拥有更少的分区。 我正在寻找减少分区数量的方法。假设我有一个 spark 数据帧(具有多个列),分为 10 个分区。我需要根据其中一列进行 orderBy 转换。完成此操作后,生成的数据帧是否具有相同