Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 使用ApacheSpark时如何处理数据库上的反压力?_Apache Spark_Apache Spark Sql - Fatal编程技术网

Apache spark 使用ApacheSpark时如何处理数据库上的反压力?

Apache spark 使用ApacheSpark时如何处理数据库上的反压力?,apache-spark,apache-spark-sql,Apache Spark,Apache Spark Sql,我们使用ApacheSpark每2小时执行一次ETL 有时,在执行读/写操作时,Spark会对数据库施加很大压力 对于Spark Streaming,我可以在kafka上看到背压配置 有没有办法在批处理中处理这个问题?背压实际上只是一个花哨的词,用来指设置最大接收速率。所以事实上它不像你想象的那样工作 这里应该做的实际上是在阅读端 现在在经典的JDBC用法中,JDBC连接器为PreparedStatements提供了fetchSize属性。因此,基本上,您可以考虑在以下答案中配置“FETCHSI

我们使用ApacheSpark每2小时执行一次ETL

有时,在执行读/写操作时,Spark会对数据库施加很大压力

对于Spark Streaming,我可以在kafka上看到
背压
配置

有没有办法在批处理中处理这个问题?

背压实际上只是一个花哨的词,用来指设置最大接收速率。所以事实上它不像你想象的那样工作

这里应该做的实际上是在阅读端

现在在经典的JDBC用法中,JDBC连接器为
PreparedStatement
s提供了
fetchSize
属性。因此,基本上,您可以考虑在以下答案中配置“FETCHSIZE”:

不幸的是,这可能无法解决
RDBMS
的所有性能问题

您必须知道的是,与运行在单个worker上的基本jdbc读取器相比,当使用整型列或谓词序列对数据进行分区时,以分布式模式加载数据会带来一些问题。在您的情况下,大量并发读取可以很容易地限制数据库

为此,我提出以下建议:

    如果可用,请考虑在JDBC上使用专用数据源 联系
  • 考虑使用专门的或通用的批量导入/导出工具,如Postgres COPY或Apache Sqoop
  • 确保了解不同JDBC数据源的性能含义 变体,尤其是在使用生产数据库时
  • 考虑为Spark作业使用单独的副本
如果您希望了解有关使用JDBC源读取数据的更多信息,我建议您阅读以下内容:

免责声明:我是该回购协议的合著者。

背压实际上只是一个花哨的词,用来指设置最大接收率。所以事实上它不像你想象的那样工作

这里应该做的实际上是在阅读端

现在在经典的JDBC用法中,JDBC连接器为
PreparedStatement
s提供了
fetchSize
属性。因此,基本上,您可以考虑在以下答案中配置“FETCHSIZE”:

不幸的是,这可能无法解决
RDBMS
的所有性能问题

您必须知道的是,与运行在单个worker上的基本jdbc读取器相比,当使用整型列或谓词序列对数据进行分区时,以分布式模式加载数据会带来一些问题。在您的情况下,大量并发读取可以很容易地限制数据库

为此,我提出以下建议:

    如果可用,请考虑在JDBC上使用专用数据源 联系
  • 考虑使用专门的或通用的批量导入/导出工具,如Postgres COPY或Apache Sqoop
  • 确保了解不同JDBC数据源的性能含义 变体,尤其是在使用生产数据库时
  • 考虑为Spark作业使用单独的副本
如果您希望了解有关使用JDBC源读取数据的更多信息,我建议您阅读以下内容:

免责声明:我是该回购协议的共同作者