Spark JDBC并行性

时间:2018-09-18 09:29:48

标签: apache-spark dataframe jdbc parallel-processing

我正在研究用例,在这种情况下,我需要一次卸载JDBC数据源,即SAP Hana数据库。我想将整个SAP Hana数据库卸载到HDFS / MapR FS。最初我们尝试了sqoop,但是Sqoop的问题取决于主键字段,通过--split-by争论,它仅支持一个主键字段。然后我们考虑计划利用Spark进行数据集的Sqoop。经历火花中可用的各种JDBC选项,例如这篇文章https://forums.databricks.com/questions/14963/problems-doing-parallel-read-from-jdbc.html。它也只接受一列,而对于SAP Hana表,大多数情况下它由共轭键(多个键组成主键)组成。

  1. spark如何读取JDBC源?它会从表中读取所有数据,然后按工作人员之间的内存分区对其进行拆分吗?

  2. 在读取JDBC SAP Hana源代码时如何指定这样的选项,并通过减少OOM错误(在上述问题#1为是的情况下)在此并行读取?

  3. 某些SAP Hana表甚至没有主键,这是带来Arge数据集的问题。

请帮助我形成正确的方法和勇气。

谢谢。

Manish

1 个答案:

答案 0 :(得分:0)

当从JDBC源中读取时,

Spark SQL能够进行有限级别的谓词下推和列修剪优化。鉴于此,可以肯定地说它不会将JDBC表中的完整数据读到内存中。尽管这在很大程度上取决于您使用的提取查询的类型。

SAP HANA's Spark Controller提供了HANA与Spark的集成。您将必须检查其对具有共轭主键而没有主键的表的支持。