在 apache spark 中创建 Dataframe 和 select(或类似操作或方法)时建立的连接

Connection made during the creation of Dataframe and select (or like operation or method) on created Dataframe in apache spark

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

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

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

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

任何文献的建议,链接也很感激。

提前谢谢你..!

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

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

  1. MySQL
  2. Postgres
  3. DB2
  4. MySqlServer
  5. 甲骨文
  6. 德比

现在问你一个问题,一旦你从数据库加载数据并创建 DataFrame,那么你的数据现在已经存在于 Spark/集群内存中,并且所有后续查询,在同一个 DataFrame 上执行都是在数据上执行已经在内存中了。 Spark 不连接到任何底层数据库。但是如果你创建了一个新的 DataFrame,那么就会调用底层数据库。 同样重要的是要记住所有这些转换只会在我们调用 DataFrame 上的任何输出操作时发生,例如 printregisterTempTablesaveAs...