在Spark中同时阅读几个镶木地板文件

Sky*_*Fox 5 apache-spark parquet

我可以使用*(星号)同时读取几个json文件:

sqlContext.jsonFile('/path/to/dir/*.json')
Run Code Online (Sandbox Code Playgroud)

有没有办法对镶木地板做同样的事情?明星不起作用.

Bor*_*ris 16

仅供参考,您还可以:

  • 使用通配符*读取镶木地板文件的子集 sqlContext.read.parquet("/path/to/dir/part_*.gz")

  • 通过显式指定它们来读取多个镶木地板文 sqlContext.read.parquet("/path/to/dir/part_1.gz", "/path/to/dir/part_2.gz")

  • 此外,您还可以使用 hadoop glob 模式或利用 Spark 分区架构,请参阅 /sf/answers/2919872581/ 。 (2认同)

dpe*_*ock 8

在spark jira上看到这个问题.从1.4开始支持它.

如果没有升级到1.4,您可以指向顶级目录:

sqlContext.parquetFile('/path/to/dir/')
Run Code Online (Sandbox Code Playgroud)

这将加载目录中的所有文件.或者,您可以使用HDFS API查找所需的文件,并将它们传递给parquetFile(它接受varargs).

  • 我得到 `AttributeError: 'SQLContext' object has no attribute 'parquetFile' ` (3认同)

小智 7

InputPath = [hdfs_path + "parquets/date=18-07-23/hour=2*/*.parquet",
             hdfs_path + "parquets/date=18-07-24/hour=0*/*.parquet"]

df = spark.read.parquet(*InputPath)
Run Code Online (Sandbox Code Playgroud)


小智 5

阅读:给出文件的路径和“*”

例子

pqtDF=sqlContext.read.parquet("Path_*.parquet")
Run Code Online (Sandbox Code Playgroud)