如何在PySpark中运行.sql文件

如何在PySpark中运行.sql文件,sql,apache-spark,pyspark,apache-spark-sql,Sql,Apache Spark,Pyspark,Apache Spark Sql,我能够使用PySpark运行单个SQL查询。比如说 spark = SparkSession.builder.appNmae("___").getOrCreate() df = spark.sql("select * from ...") 但是我有一个.sql文件,里面有很多我想运行的查询。我必须一次一个地单独执行它们吗,还是有一种简单的方法来运行所有它们 例如: 表1中3行3列,表2中相同 .sql文件 select * from table1; s

我能够使用PySpark运行单个SQL查询。比如说

spark = SparkSession.builder.appNmae("___").getOrCreate()
df = spark.sql("select * from ...")
但是我有一个.sql文件,里面有很多我想运行的查询。我必须一次一个地单独执行它们吗,还是有一种简单的方法来运行所有它们

例如: 表1中3行3列,表2中相同

.sql文件

select * from table1;

select * from table2;
输出df:

   A  B  C
0  1  2  3
1  4  5  6
2  7  8  9
3  a  b  c
4  d  e  f
5  g  h  i

df1

和df2

   A  B  C
0  a  b  c
1  d  e  f
2  g  h  i

如果要将所有查询结果合并到数据帧列表中(假设每行都是一个查询)


如果要组合所有数据帧(假设它们都具有相同的架构)


一定要和Pypark一起吗?你到底想干什么?您可以从命令行
hive-f my file.sql执行查询。(
hive
可能会被弃用,但有一些等效的方法可以做到这一点)理想情况下,我希望保存所有查询结果,例如保存到一个数据帧(理想情况下是一个大数据帧,但每个数据帧都有一个)或者csv。你能提供两个小查询和所需的输出吗?对我的原始配置单元的更新推荐:配置单元已被弃用,但你可以使用
beeline-f myfile.sql
。(尽管基于澄清,这可能无法回答您的问题)这不是一个写得很好的问题。可以读取文件并在
上拆分但这也不能保证有效。如果有评论怎么办?如果
字符是否显示在字符串中?如果一个查询失败怎么办?我认为,除非您想实现自己的查询解释器,否则一般情况下不会有一个简单/干净的解决方案。@pault这是真的,但我想这是问题的MVP。。。至少它适用于问题中的简单示例
   A  B  C
0  a  b  c
1  d  e  f
2  g  h  i
with open('/path/to/file.sql', 'r') as f:
    query = f.readlines()

dfs = []
for line in query:
    dfs.append(spark.sql(line))
from functools import reduce

df = reduce(lambda x, y: x.union(y), dfs)