Does Spark Dataframe aplies the transformations against DB?
当我用 PySpark 获得一张桌子时
1 2 3 4 5 | df1 = session.read.jdbc(url=self.url, table=self.table, properties={"driver": self.driver, "user": self.user, "password": self.password}) |
或
1 2 3 4 5 6 | df1 = sql.read.format("com.databricks.spark.redshift") .options(url=self.url, query=self.table, user=self.user, password=self.password, tempdir="s3://path/data/").load() |
然后我应用了一些转换,比如 joins 和 groupBy
1 2 | df3 = df1.join(df2, df1.id == df2.id) df_res = df3.groupBy("id").agg({'tax': 'sum'}) |
这是针对数据库的吗?
如果是,那么在内存中执行此操作的方法是什么?
不是。虽然 Spark 可以下推简单的投影和选择(细节取决于特定的数据源实现),但它不会对数据库应用繁重的处理,除非在受支持的数据源中明确指示它。
例如,使用
使用第一个片段 (
之后Spark会在集群内部本地处理数据,这包括