sql - 如何在 PySpark 中运行 .sql 文件
问题描述
我能够使用 PySpark 运行单个 SQL 查询。例如
spark = SparkSession.builder.appNmae("___").getOrCreate()
df = spark.sql("select * from ...")
但是我有一个 .sql 文件,里面有很多我想运行的查询。我必须一次执行一个,还是有一种简单的方法来运行所有这些?
示例:table1 中 3 行 3 列,table2 中相同
.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
A B C
0 1 2 3
1 4 5 6
2 7 8 9
和 df2
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)
推荐阅读
- grafana - How To Push Gatling Perf Results To EC2 Grafana/InfluxDB instance
- docker - Error w/ installing memcached in Docker alpine image
- php - 在 Laravel 中搜索 where 子句或 Where 子句
- css - p-listbox:搜索过滤器文本框不适合宽度
- python - 安装 JsonGraph 模块时出现编译错误
- javascript - 为什么通过实例调用“get 方法”不需要括号(分组运算符)?
- codeigniter-3 - DOM Input 元素应该具有自动完成属性
- javascript - 通过字符串比较对数组进行排序
- git - Git 找不到项目 URL,尽管它存在并且我有权限
- java - 来自 Restful API 的阅读列表