当前位置: 首页 > 知识库问答 >
问题:

使spark分区读取jdbc的其他方法

庞瀚
2023-03-14

当使用Spark sql读取jdbc数据时,Spark默认只会启动1个分区。但是当表太大时,Spark读取速度会很慢。
我知道有两种方法可以制作分区:
1.在选项中设置分区列、lowerBound、upperBound和num分区;
2.在选项中设置偏移数组;
但我的情况是:
我的jdbc表没有INT列,或者列字符串可以很容易地用这两种方式的偏移量分隔。
这两种方法在我的情况下行不通,还有其他方法可以分区管理Spark read jdbc数据吗?

共有1个答案

锺离宸
2023-03-14

看看这个问题...解决方案是使用数据库中的伪随机列,并对要读取的行数进行分区。

火花JDBC伪柱不工作在这里输入链接描述

 类似资料:
  • 我正在尝试使用read.jdbc从Db2中提取数据以实现spark。无法在查询中传递UR字符串。 如何在spark jdbc读取中将隔离设置为UR。 这将失败,错误:com.ibm.DB2.jcc.am.sqlsyntaxerrorexception:DB2 SQL error:sqlcode=-199,sqlstate=42601,sqlerrmc=ur;fetch,)OFFSET LIMIT

  • 我在集群模式下运行火花,并通过JDBC从RDBMS读取数据。 根据 Spark 文档,这些分区参数描述了从多个工作线程并行读取时如何对表进行分区: 这些是可选参数。 如果我不指定这些,会发生什么情况: < li >只有一名工人读取全部数据? < li >如果它仍然并行读取,它如何对数据进行分区?

  • 我正在集群模式下运行spark(使用pyspark)并通过JDBC从RDBMS读取数据。我通过查询(而不是直接通过表)读取信息 我使用选项来分区,比如numPartitions、upperBound等。 而且 不幸的是,在生成查询的末尾,在WHERE子句上触发转换分区选项,因此PostGreSQL读取full表full而不使用索引! 我有一个这样的问题

  • 当我使用Spark从S3读取多个文件时(例如,一个包含许多Parquet文件的目录)- 逻辑分区是在开始时发生,然后每个执行器直接下载数据(在worker节点上)吗?< br >还是驱动程序下载数据(部分或全部),然后进行分区并将数据发送给执行器? 此外,分区是否默认为用于写入的相同分区(即每个文件= 1个分区)?

  • 我遇到了一个问题,无法在Hive中读取由Spark生成的分区拼花文件。我可以在hive中创建外部表,但是当我尝试选择几行时,hive只返回一个“OK”消息,没有行。 我能够在Spark中正确读取分区的拼花文件,所以我假设它们是正确生成的。当我在hive中创建外部表而不进行分区时,我也能够读取这些文件。 null 我的Spark配置文件有以下参数(/etc/Spark/conf.dist/spark

  • 问题内容: 我正在用Go编写执行大量并行计算的软件。我想从工作线程中收集数据,但我不太确定如何以安全的方式进行数据收集。我知道我可以使用通道,但是在我的场景中,它们使它变得更加复杂,因为我必须以某种方式同步主线程中的消息(等到每个线程发送了一些东西)。 情境 主线程创建 n个 实例,并在goroutine中启动其方法,以便每个工作线程都在各自的线程中运行。主线程每10秒应从工作线程中收集一些简单值