apache-spark - Spark JDBC 并行性
问题描述
我正在研究一个用例,在我的情况下,我需要一次卸载 JDBC 数据源,它是 SAP Hana 数据库。我想将整个 SAP Hana 数据库卸载到 HDFS/MapR FS。我们最初尝试过sqoop,但是Sqoop的问题在于它的主键字段,并且它通过--split-by争论只支持一个主键字段。然后我们想计划利用 Spark 来做数据集的 Sqoop。浏览 spark 中可用的各种 JDBC 选项,例如这篇文章https://forums.databricks.com/questions/14963/problems-doing-parallel-read-from-jdbc.html。它也只接受一列,而在 SAP Hana 表的情况下,它主要由共轭键(形成主键的多个键)组成。
spark 如何读取 JDBC 源代码?它是否从表中读取所有数据,然后在工作人员之间按内存中的分区对其进行拆分?
如何在读取 JDBC SAP Hana 源时指定这样的选项并通过减少 OOM 错误来进行并行读取(如果上面的问题 #1 是肯定的)
一些 SAP Hana 表甚至没有主键,这就是带来 arge 数据集的问题。
请帮助我形成正确的方法和策略。
提前致谢。
马尼什
解决方案
从 JDBC 源读取时,Spark SQL 能够进行有限级别的谓词下推和列修剪优化。鉴于此,可以肯定地说它不会将 JDBC 表中的完整数据读入内存;尽管这在很大程度上取决于您使用的提取查询的类型。
SAP HANA 的 Spark 控制器提供 HANA 与 Spark 的集成。您必须检查它是否支持具有共轭主键且没有主键的表。
推荐阅读
- java - 带有二维数组的 Java 流
- java - 在片段中设置蓝牙接口
- batch-file - Bat File 等待远程输入
- java - 如果按下它,我如何制作一个 64 个 if 语句的循环来填充每个单独的方块
- java - 创建 Toast 时出现错误“无法解析方法 makeText”
- c# - 如何调试从未加载的 CodeFixProvider
- javascript - 下载时加密 zip 文件夹,然后使用 Node.js 解密?
- python - 多行 Seaborn 条形图
- python - Python - 在保持类封装的同时从其他类访问类属性/方法的选项?
- wordpress - WooCommerce 在产品页面上显示分类类别和子类别