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

通过从配置单元表中读取数据创建的spark数据帧的分区数

南宫阳冰
2023-03-14

我对spark数据帧的分区数量有疑问。

如果我有包含列(姓名、年龄、id、位置)的Hive表(雇员)。

创建表员工(名称字符串,年龄字符串,id Int)分区(位置字符串);

如果雇员表有10个不同的位置。因此,在HDFS中将数据划分为10个分区。

如果我通过读取 Hive 表(员工)的整个数据来创建 Spark 数据帧(df)。

Spark 将为数据帧 (df) 创建多少个分区?

df.rdd.partitions.size = ??

共有1个答案

屠君墨
2023-03-14

根据HDFS的块大小创建分区。

假设您将10个分区作为单个RDD读取,如果块大小为128MB,则

分区数量 = (大小为 (10 个分区,以 MB 为单位)) / 128MB

将存储在HDFS上。

请参考以下链接:

http://www.bigsynapse.com/spark-input-output

 类似资料:
  • 我需要一种从Scala数据框创建hive表的方法。hive表应该具有按日期分区的S3位置的ORC格式的基础文件。 以下是我目前得到的信息: 我以 ORC 格式将 scala 数据帧写入 S3 我可以在S3位置看到ORC文件。我现在在这些ORC文件的顶部创建了一个配置单元表: 但是配置单元表是空的,即 不打印任何结果。 但是,当我删除< code>PARTITIONED BY行时: 我看到了选择查询

  • states是按国家分区的,所以当我对上面的数据集进行计数时,查询会扫描所有分区。但是如果我这样读的话- 分区被正确修剪。有人能解释为什么当您将表映射到case类时会丢失分区信息吗?

  • 有人能解释一下将为Spark Dataframe创建的分区数量吗。 我知道对于RDD,在创建它时,我们可以提到如下分区的数量。 但是对于创建时的Spark数据帧,看起来我们没有像RDD那样指定分区数量的选项。 我认为唯一的可能性是,在创建数据帧后,我们可以使用重新分区API。 有人能告诉我在创建数据帧时,我们是否可以指定分区的数量。

  • 我正在使用: Python 3.6.8 火花2.4.4 我在spark类路径中有以下JAR: http://repo1.maven.org/maven2/com/databricks/spark-redshift_2.11/2.0.1/spark-redshift_2.11-2.0.1.jar http://repo1.maven.org/maven2/com/databricks/spark-a

  • 我在集群模式下运行火花,并通过JDBC从RDBMS读取数据。 根据 Spark 文档,这些分区参数描述了从多个工作线程并行读取时如何对表进行分区: 这些是可选参数。 如果我不指定这些,会发生什么情况: < li >只有一名工人读取全部数据? < li >如果它仍然并行读取,它如何对数据进行分区?

  • 我需要使用 spark-sql 加载一个 Hive 表,然后对其运行一些机器学习算法。我是这样写的: 它工作得很好,但如果我想增加数据集数据帧的分区数,我该怎么做?使用普通RDD,我可以写: 我想要有N个分区。 谢谢