在创建数据帧期间建立的连接,并在 apache spark 中创建的数据帧上进行选择(或类似的操作或方法)



我正在寻找以下问题的解决方案。

  • 问:当我们在Apache Spark中创建数据帧时,使用数据库中的表,很明显将建立连接。 但是如果我执行一些操作(如 select()),它会尝试重新连接吗?
  • 或者所有操作都会被记住,并且只有一次请求以延迟加载方式建立连接?

*基本上,我担心对我的数据库进行最小的调用(请求)。

因为我听说它可以是高效的,特别是在处理大数据时。就我而言,我可能致力于创建数据帧并对其执行操作,其数据可以是大数据。因此,如果我只从数据库中获取一次数据,那将是明智的。

如果有人能帮助了解幕后发生的事情,那就太好了。

对任何文献的建议,链接也值得赞赏。

提前谢谢你..!

您的问题是通用的,根据驱动程序的不同,结果和行为可能会有所不同。

例如 - 假设您使用的是 Type-4 JDBC 驱动程序并在SPARK_CLASSPATH中添加驱动程序 jar 文件,并且您的驱动程序支持连接池,那么一旦创建连接,它将重新用于后续请求,但如果您的驱动程序没有,那么每次您发出 NEW 请求时,它将创建不同的连接。RDBMS就是这种情况,Spark-1.6支持以下RDBMS:

  1. MySQL
  2. 波斯特格雷斯
  3. DB2
  4. MySqlServer
  5. 神谕
  6. 德比
现在

来回答你的问题,一旦你从数据库加载数据并创建了数据帧,那么你的数据现在已经存在于Spark/集群内存中,并且所有后续查询,在同一数据帧上执行,都是在内存中已经执行的数据。Spark 不会连接到任何基础数据库。但是,如果创建新的数据帧,则会调用基础数据库。此外,重要的是要记住,所有这些转换仅在我们在数据帧上调用任何输出操作(如 printregisterTempTablesaveAs...等)时才会发生。

相关内容

  • 没有找到相关文章

最新更新