在 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")
我可以使用 *(星号)同时读取几个 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")