如何使用S3中的数据框访问多个json文件

时间:2016-11-07 12:49:27

标签: apache-spark apache-spark-sql spark-dataframe

我正在使用apapche spark。我想在日期的基础上从spark访问多个json文件。我如何选择多个文件,即我想提供以1034.json结尾的文件到以1434.json结尾的文件的范围。我正在尝试这个。

DataFrame df = sql.read().json("s3://..../..../.....-.....[1034*-1434*]");

但是我收到以下错误

   at java.util.regex.Pattern.error(Pattern.java:1924)
    at java.util.regex.Pattern.range(Pattern.java:2594)
    at java.util.regex.Pattern.clazz(Pattern.java:2507)
    at java.util.regex.Pattern.sequence(Pattern.java:2030)
    at java.util.regex.Pattern.expr(Pattern.java:1964)
    at java.util.regex.Pattern.compile(Pattern.java:1665)
    at java.util.regex.Pattern.<init>(Pattern.java:1337)
    at java.util.regex.Pattern.compile(Pattern.java:1022)
    at org.apache.hadoop.fs.GlobPattern.set(GlobPattern.java:156)
    at org.apache.hadoop.fs.GlobPattern.<init>(GlobPattern.java:42)
    at org.apache.hadoop.fs.GlobFilter.init(GlobFilter.java:67)

请指明出路。

1 个答案:

答案 0 :(得分:2)

你可以读到这样的东西。

sqlContext.read().json("s3n://bucket/filepath/*.json")

此外,您可以在文件路径中使用wildcards

例如:

sqlContext.read().json("s3n://*/*/*-*[1034*-1434*]")