【问题标题】:Is it possible to give multiple columns in partitionColumns while working with Spark-JDBC?使用 Spark-JDBC 时是否可以在 partitionColumns 中提供多个列?
【发布时间】:2018-10-05 12:04:07
【问题描述】:

我正在尝试读取 postgres db 上的表并将数据加载到 HDFS 上的 Hive 表中,如下所示:

val yearDF = spark.read.format("jdbc").option("url", connectionUrl).option("dbtable", s"(${execQuery}) as year2017")
.option("user", devUserName).option("password", devPassword)
.option("partitionColumn","source_system_name")
.option("lowerBound", 10000).option("upperBound", 50000)
.option("numPartitions",12).load()

我的工作因以下消息而失败:Container exited with a non-zero exit code 143 & GC Overhead issue。

数据量很大,导致分区倾斜。 观察表中的数据后,我了解到“source_system_name”不是对数据进行分区的正确列。但我发现其他三列的组合:source_system_name, org_code, period 最适合在读取和处理时拆分数据。 (我做了一个'group by'来找出表中的行数,并且数据在每个组中分布得有点均匀) 但我不知道如何使用 spark-jdbc 的 partitionColumn 选项中的所有三列。谁能告诉我是否可以在选项中使用多个列:partitionColumn while reading data from an RDBMS table.

【问题讨论】:

  • 这是一次性的还是需要重复多次的?
  • 我必须临时运行它。无论何时需要,但我认为如果实施成功,它将被更多地使用。
  • 你能改变你的源表来提供一个唯一的递增整数列吗?如果是这样,工作就完成了。
  • 有一个列:forecast_id,它是一个唯一的整数列。但是表中有数百万行,如何将partitionColumn定义为预测并使用forecast_id决定lowerBound,upperBound,partitionColumn。
  • 我认为唯一性不足以消除歪斜的可能性。您需要确保它们的相关值分布相当均匀。如果您使用递增的整数字段,则您知道第一个值为零,因此您只需要一个简单的 select 语句来确定上限。

标签: apache-spark


【解决方案1】:

不,以下适用:

  • 对于 partitionColumn、lowerBound、upperBound - 如果指定了其中任何一个选项,则必须全部指定这些选项。此外,必须指定 numPartitions。

  • 它们描述了在从多个 worker 并行读取时如何对表进行分区。 partitionColumn 必须是相关表中的数字列。后者意味着它只能是 1 列。

  • lowerBound 和 upperBound 仅用于决定分区步长,而不用于过滤表中的行。所以表中的所有行都会被分区并返回。

【讨论】:

  • 好的。我通过在数据的整数列上对其进行分区来读取数据。但是我在读取大量数据时仍然无法正确分区,因此面临数据倾斜问题。我不得不在这里发布问题的原因之一是以下问题。你介意看看吗stackoverflow.com/questions/52603131/…
  • 我通过对一个整数列 cast_id 进行分区来读取数据,该列也是唯一的。
  • 还有其他问题有相同的错误,因此如果我发布它会重复。但就我而言,问题在于偏斜而不是内存。不好意思在这里谈另一个问题,我不认为如果有人阅读它会重复,但如果您认为您之前没有回答过,可以看看它吗?
  • 分析我认为您已经完成的数据并创建第二个作业 ao,您可以相应地对这两个作业进行分区。
  • 结束本次讨论之前的最后一件事。 “创建第二个工作,您可以相应地对两个工作进行分区”我该如何实现?
猜你喜欢
  • 2017-02-02
  • 1970-01-01
  • 2019-12-22
  • 1970-01-01
  • 2012-01-02
  • 2012-11-08
  • 2022-11-07
  • 1970-01-01
  • 2020-02-01
相关资源
最近更新 更多