Spark JDBC parallelism



我正在研究一个用例,我需要对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源代码? 它是否从表中读取所有数据,然后在worker之间按内存中的分区拆分它?

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

  3. 一些SAP Hana表甚至没有主键,这是引入arge数据集的问题。

请帮助我形成正确的方法和努力。

提前谢谢。

马尼什

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

SAP HANA的Spark Controller为HANA与Spark提供了集成。您必须检查它是否支持具有共轭主键和无主键的表。

最新更新