sql - 如何在 Spark SQL 中指定表的多个路径
问题描述
为了清楚起见,我问的是 Spark SQL 而不是 Spark DataFrame 的语法。
我们知道 Spark SQL 可以直接查询 parquet(文本等)表,下面是一个示例。如果我想将 2 条路径用作单个表怎么办?
select
*
from
parquet.`path_1`
解决方案
这是在 python 中,所以我可以显示变量,但 SQL 部分将是相同的。我假设您只想将数据附加到自身上?如果是这样:
pth1 = '/path/to/location1/part-r-00000-bf53578.gz.parquet'
pth2 = '/path/to/location2/part-r-00001-bf265.gz.parquet'
sqlContext.sql("""
select * from parquet.`hdfs://{0}`
union
select * from parquet.`hdfs://{1}`
""".format(pth1,pth2)).show()
+----+----+------------+
|col1|col2| col3|
+----+----+------------+
| 2| b|9.0987654321|
| 1| a| 4.123456789|
+----+----+------------+
只有 spark-sql 它看起来像:
SELECT *
FROM parquet.`hdfs:///path/to/location1/part-r-00000-bf53578.gz.parquet`
UNION
SELECT *
FROM parquet.`hdfs:///path/to/location2/part-r-00001-bf265.gz.parquet`
推荐阅读
- python - numpy.matrix 忽略复制
- reactjs - 未找到 Webpack 错误模块
- xml - 使用 XSLT 从 XML 中重命名和删除标签
- vba - VBA:是否可以将一个类创建/定义为特定的而不是另一个现有的类?
- java - Jackrabbit Oak 删除节点不会释放磁盘空间
- asp.net-mvc - 如何在模式弹出窗口中使用 Kendo.Grid() 显示进度加载指示器?
- react-native - 地理位置 Android 响应显着延迟
- git - Git stash drop 与 git reset
- powershell - 使用 powershell 调整 MS Word 页面布局
- firebase - 如何为 Firebase Firestore 启用在线/离线模式?