Spark.sql() 和 Spark.read.format("jdbc").option("query", "") 有什么区别?

jam*_*pow 5 python apache-spark apache-spark-sql pyspark

我假设当我们使用spark sql时使用spark.sql(query),当我们使用oracle sql语法时使用spark.read.format("jdbc").option("query", "")。我的假设正确吗?

Shu*_*Shu 4

是的,Spark 的作用还不止于此!

Spark-Jdbc:

Spark 文档中Jdbc(Java 数据库连接)用于从其他数据库(oracle、mysql、sqlserver、postgres、db2 等)读取/写入数据。

spark.read.format("jdbc").option("query", "(select * from <db>.<tb>)e")

Spark-Sql:

来自文档Spark 的模块用于处理结构化数据,并允许您使用DataFrame APISQL API查询数据。

  1. 我们可以使用 Spark-Sql 从 hive/presto/athena/delta/csv/parquet...等文件中读取数据。
  2. 在数据帧上创建临时视图/表,然后运行 ​​SQL 查询。
  3. 轻松将 RDD/Dataframe 写入 Hive 或 Parquet 文件。

在此输入图像描述