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

Read few parquet files at the same time in Spark

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

sqlContext.jsonFile('/path/to/dir/*.json')

有什么方法可以对镶木地板做同样的事情吗?星号无效。

在 spark jira 上查看 this issue。从 1.4 开始支持。

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

sqlContext.parquetFile('/path/to/dir/')

这将加载目录中的所有文件。或者,您可以使用 HDFS API 找到您想要的文件,并将它们传递给 parquetFile(它接受可变参数)。

仅供参考,您还可以:

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

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

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)

读取:给出文件的路径和'*'

示例

pqtDF=sqlContext.read.parquet("Path_*.parquet")