Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Pyspark数据帧作为视图_Sql_View_Pyspark_Apache Spark Sql - Fatal编程技术网

Sql Pyspark数据帧作为视图

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

对于我正在运行的脚本,我有一组链式视图,它们查看了我正在使用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")
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升级新视图