相关疑难解决方法(0)

通过JDBC从RDBMS读取时分区为spark

我在集群模式下运行spark并通过JDBC从RDBMS读取数据.

根据Spark 文档,这些分区参数描述了在从多个worker并行读取时如何对表进行分区:

  • partitionColumn
  • lowerBound
  • upperBound
  • numPartitions

这些是可选参数.

如果我不指定这些,会发生什么:

  • 只有1名工人读取整个数据?
  • 如果它仍然并行读取,它如何分区数据?

partitioning jdbc apache-spark apache-spark-sql

9
推荐指数
1
解决办法
4536
查看次数

mapreduce split和spark paritition之间的区别

我想问一下,在使用Hadoop/MapReduce和Spark时,数据分区有什么显着差异吗?它们都在HDFS(TextInputFormat)上工作,所以它在理论上应该是相同的.

是否有任何数据分区程序可能不同的情况?任何见解对我的学习都非常有帮助.

谢谢

hadoop mapreduce hdfs apache-spark

7
推荐指数
1
解决办法
1170
查看次数

Spark Dataframe的分区数

任何人都可以解释将为Spark Dataframe创建的分区数量.

我知道对于RDD,在创建它时我们可以提到下面的分区数量.

val RDD1 = sc.textFile("path" , 6) 
Run Code Online (Sandbox Code Playgroud)

但是对于Spark数据帧,在创建时看起来我们没有选择指定像RDD那样的分区数.

我认为只有在创建数据框架后我们可以使用重新分区API.

df.repartition(4)
Run Code Online (Sandbox Code Playgroud)

因此,如果我们可以在创建数据帧时指定分区数量,请​​告诉我们.

dataframe apache-spark apache-spark-sql

6
推荐指数
1
解决办法
9162
查看次数

Hive 分区、Spark 分区和 Spark 中的连接 - 它们之间的关系

试图了解 Hive 分区与 Spark 分区的关系,最终解决了一个关于连接的问题。

我有 2 个外部 Hive 表;均由 S3 存储桶支持并由 分区date;所以在每个存储桶中都有名称为 format 的键date=<yyyy-MM-dd>/<filename>

问题 1:

如果我将此数据读入 Spark:

val table1 = spark.table("table1").as[Table1Row]
val table2 = spark.table("table2").as[Table2Row]
Run Code Online (Sandbox Code Playgroud)

那么结果数据集将分别有多少个分区?分区等于 S3 中的对象数量?

问题2

假设这两种行类型具有以下架构:

Table1Row(date: Date, id: String, ...)
Table2Row(date: Date, id: String, ...)
Run Code Online (Sandbox Code Playgroud)

并且我想加入table1table2在领域dateid

table1.joinWith(table2,
  table1("date") === table2("date") && 
    table1("id") === table2("id")
)
Run Code Online (Sandbox Code Playgroud)

Spark 是否能够利用被连接的字段之一是 Hive 表中的分区键来优化连接?如果是这样怎么办?

问题 3

假设现在我正在使用RDDs 代替:

val rdd1 = table1.rdd …
Run Code Online (Sandbox Code Playgroud)

hive apache-spark apache-spark-sql apache-spark-dataset

5
推荐指数
1
解决办法
3372
查看次数