使用jdbc slow将Spark数据帧写入数据库(Exasol)

时间:2018-12-05 09:58:04

标签: apache-spark jdbc apache-spark-sql

我正在从AWS(s3)中读取数据并写入数据库(exasol),这花费了太多时间,即使设置batchsize不会影响性能。 我正在写218万行(约3.5 gb),耗时17分钟

以集群模式20节点集群运行

我如何使其快速

数据集ds = session.read()。parquet(s3Path)

ds.write()。format(“ jdbc”)。option(“ user”,用户名).option(“ password”,密码).option(“ driver”,Conf.DRIVER).option(“ url” ,dbURL).option(“ dbtable”,exasolTableName).option(“ batchsize”,50000).mode(SaveMode.Append).save();

1 个答案:

答案 0 :(得分:0)

好,这是一个有趣的问题。

我没有检查最近发布的Spark连接器的实现细节。但是您可以使用一些以前存在的方法。

  1. 将Spark作业结果另存为Hadoop中的CSV文件。通过WebHDFS http调用从所有创建的文件运行标准并行IMPORT。
  2. 据我所知,
  3. 官方UDF script可以直接从Parquet导入。
  4. 您可以实现自己的Java UDF脚本,以所需的方式读取Parquet。例如,这就是ORC files的工作方式。

通常来说,实现某些真实性能的最佳方法是完全绕开Spark。