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