在pyspark

时间:2018-04-12 22:10:00

标签: pyspark pyspark-sql

我似乎无法在pyspark的文档中找到相关文档。 我试图一次读取多个parquets,如下:

df = sqlContext.read.option("basePath", "/some/path")\
                    .load("/some/path/date=[2018-01-01, 2018-01-02]")

并收到以下异常

java.util.regex.PatternSyntaxException: Illegal character range near index 11
E   date=[2018-01-01,2018-01-02]

我尝试用\-替换连字符,但后来我收到了一个未找到的文件异常。

我很感激你的帮助

1 个答案:

答案 0 :(得分:0)

转发-不是您的问题。您不能在列表中指定多个日期。如果您想阅读多个文件,可以选择几个选项。

选项1 :使用*作为通配符:

df = sqlContext.read.option("basePath", "/some/path").load("/some/path/date=2018-01-0*")

但是这也会读取任何名为/some/path/data=2018-01-03/some/path/data=2018-01-09的文件。

选项2 :分别阅读每个文件并将结果合并

dates = ["2018-01-01", "2018-01-02"]
df = reduce(
    lambda a, b: a.union(b), 
    [
        sqlContext.read.option("basePath", "/some/path").load(
            "/some/path/date={d}".format(d=d)
        ) for d in dates
    ]
)