Apache spark 内存中的火花数据

Apache spark 内存中的火花数据,apache-spark,pyspark,pyspark-sql,Apache Spark,Pyspark,Pyspark Sql,我正在使用pysparksql,我想从RedShift中检索表,将它们保存在内存中,然后应用一些连接和转换。 我希望将连接和转换应用于内存中的数据,而不是将使用转换创建的sql计划直接应用于Redshift 当我检索数据时,它只保存模式,对吗 如果我使用createTempView(),它会在sparkcontext中保存一个视图,但不会保存数据,对吗 如果在获取数据帧后使用cache(),它会将数据保存在内存中吗?接下来的转换应用于内存 df = manager.session.read.jd

我正在使用pysparksql,我想从RedShift中检索表,将它们保存在内存中,然后应用一些连接和转换。 我希望将连接和转换应用于内存中的数据,而不是将使用转换创建的sql计划直接应用于Redshift

当我检索数据时,它只保存模式,对吗

如果我使用createTempView(),它会在sparkcontext中保存一个视图,但不会保存数据,对吗

如果在获取数据帧后使用cache(),它会将数据保存在内存中吗?接下来的转换应用于内存

df = manager.session.read.jdbc(url=url, table=table, properties={"driver": driver, "user": user, "password": password})

df1 = manager.session.read.jdbc(url=url, table=table1, properties={"driver": driver, "user": user, "password": password})

df2 = manager.session.read.jdbc(url=url, table=table2, properties={"driver": driver, "user": user, "password": password})

df_res = df.union(df2)

df_res = df_res.groupBy("seq_rec", "seq_res").agg({'impuesto': 'sum'}).withColumnRenamed("SUM(impuesto)", "pricing")

df_result = df.join(df_res, [df.seq == df_res.seq_rec, df.res == df_res.seq_res])
之后,我将数据帧保存到一个avro文件中,这里是应用所有转换的地方吗

当我检索数据时,它只保存模式,对吗

是的,没错

如果我使用createTempView(),它会在sparkcontext中保存一个视图,但不会保存数据,对吗

这里也一样

如果在获取数据帧后使用cache(),它会将数据保存在内存中吗?接下来的转换应用于内存

df = manager.session.read.jdbc(url=url, table=table, properties={"driver": driver, "user": user, "password": password})

df1 = manager.session.read.jdbc(url=url, table=table1, properties={"driver": driver, "user": user, "password": password})

df2 = manager.session.read.jdbc(url=url, table=table2, properties={"driver": driver, "user": user, "password": password})

df_res = df.union(df2)

df_res = df_res.groupBy("seq_rec", "seq_res").agg({'impuesto': 'sum'}).withColumnRenamed("SUM(impuesto)", "pricing")

df_result = df.join(df_res, [df.seq == df_res.seq_rec, df.res == df_res.seq_res])
不可以。当第一次加载数据集时,它可能会在内存中缓存数据,分数取决于可用资源。它不会急切地获取数据

SQL中有一个旧的、记录时间更长的
缓存表
,用于急切地获取数据并尝试缓存数据

spark.sql("CACHE TABLE foo")