Sql Pyspark数据帧作为视图
对于我正在运行的脚本,我有一组链式视图,它们查看了我正在使用Apache Spark sql的sql中的一组特定数据:Sql Pyspark数据帧作为视图,sql,view,pyspark,apache-spark-sql,Sql,View,Pyspark,Apache Spark Sql,对于我正在运行的脚本,我有一组链式视图,它们查看了我正在使用Apache Spark sql的sql中的一组特定数据: %sql create view view_1 as select column_1,column_2 from original_data_table 这一逻辑在view\n中达到顶峰。 但是,我需要执行难以或不可能在sql中实现的逻辑,特别是explode命令: %python df_1 = sqlContext.sql("SELECT * from view_n") d
%sql
create view view_1 as
select column_1,column_2 from original_data_table
这一逻辑在view\n中达到顶峰。
但是,我需要执行难以或不可能在sql中实现的逻辑,特别是explode命令:
%python
df_1 = sqlContext.sql("SELECT * from view_n")
df1_exploded=df_1.withColumn("exploded_column", explode(split(df_1f.col_to_explode,',')))
我的问题是:
在sql表和pyspark数据帧之间切换是否存在速度成本?或者,由于pyspark数据帧是惰性评估的,它与视图非常相似吗
有没有更好的方法从和sql表切换到pyspark数据帧
您可以使用explode和DF通过sparksql拥有的任何东西
printspark.version
2.4.3
df=spark.createDataFrame[1[1,2,3],2[4,5,6],3[7,8,9],],[id,nest]
打印模式
根
|-id:long nullable=true
|-nest:array nullable=true
||-元素:long containsnall=true
df.createOrReplaceTempViewsql\u视图
spark.sqlSELECT id,从sql\u view.show中将嵌套分解为un\u嵌套
df.createOrReplaceTempViewsql\u视图
spark.sqlSELECT id,从sql_view.show将嵌套分解为展平
+--+----+
|id |展平|
+--+----+
| 1| 1|
| 1| 2|
| 1| 3|
| 2| 4|
| 2| 5|
| 2| 6|
| 3| 7|
| 3| 8|
| 3| 9|
+--+----+
我不知道!谢谢但是,如果我想使用pyspark,您知道如何在使用Spark SQL创建的视图上使用它吗?当然。。。df=spark.sqlsql从此处查看。。。视图只是sql查询,通常从持久化对象(如表)调用,以显示一些聚合/KPI,因此据我所知,您只需将视图的sql字符串作为df读入即可,但是最好将视图保持为sql而不是df,这样您就不会复制对象,也不会因为它创建了太多依赖项而不得不从dfs升级新视图