首页 > 解决方案 > 如何在 Spark SQL 中指定表的多个路径

问题描述

为了清楚起见,我问的是 Spark SQL 而不是 Spark DataFrame 的语法。

我们知道 Spark SQL 可以直接查询 parquet(文本等)表,下面是一个示例。如果我想将 2 条路径用作单个表怎么办?

select
    *
from
    parquet.`path_1`

标签: sqlapache-sparkpath

解决方案


这是在 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`


推荐阅读