使用 Apache Beam 和 ParquetIO 读取多个镶木地板文件
Read multiple parquet files using Apache Beam and ParquetIO
我需要在 Apache Beam 中读取多个 parquet 文件,所有文件都在同一个文件夹中。
我尝试使用通配符 *.
来阅读它
我已经设法使用 ParquetIO 读取分离的 parquet 文件,这是我如何读取一个 parquet 文件的片段:
pipeline.apply(ParquetIO.read(SCHEMA).from(filePath + File.separator + "*"));
其中文件路径例如 /path/xxx.parquet.
我尝试读取多个 parquet 文件的代码片段是
pipeline.apply(ParquetIO.read(SCHEMA).from(folderPath + File.separator + "*.parquet" + File.separator + "*"));
文件夹路径例如/path/to/parquet/files/
我也试过没有最后一部分File.separator + "*",但结果是一样的。
我得到的信息是:
FileIO:654 - Matched 0 files for pattern
/path/to/parquet/files/*.parquet/ *
此外,我可以有各种编号和名称的镶木地板文件。
是否可以使用 Apache Beam 读取多个 parquet 文件,因为我找到了读取多个 txt 文件的方法?
是的,可以使用 ParquetIO
读取多个 parquet 文件,因为它在后台使用 FileIO
。只需尝试为此使用另一种匹配模式。在您的情况下,它可能是这样的(我希望 folderPath
是“/path/to”):
pipeline.apply(ParquetIO.read(SCHEMA).from(folderPath + File.separator + "parquet" + File.separator + "*" + File.separator + "*"));
或者最后只是双星:
pipeline.apply(ParquetIO.read(SCHEMA).from(folderPath + File.separator + "parquet" + File.separator + "**");
您不能将 .
用作 glob 模式的一部分,因为它可能是文件路径的合法部分。使用 ?
匹配单个目录中的任何单个字符或 *
匹配任何字符串。此外,“**”模式匹配任何字符串,并跨越目录边界。
我需要在 Apache Beam 中读取多个 parquet 文件,所有文件都在同一个文件夹中。 我尝试使用通配符 *.
来阅读它我已经设法使用 ParquetIO 读取分离的 parquet 文件,这是我如何读取一个 parquet 文件的片段:
pipeline.apply(ParquetIO.read(SCHEMA).from(filePath + File.separator + "*"));
其中文件路径例如 /path/xxx.parquet.
我尝试读取多个 parquet 文件的代码片段是
pipeline.apply(ParquetIO.read(SCHEMA).from(folderPath + File.separator + "*.parquet" + File.separator + "*"));
文件夹路径例如/path/to/parquet/files/
我也试过没有最后一部分File.separator + "*",但结果是一样的。 我得到的信息是:
FileIO:654 - Matched 0 files for pattern /path/to/parquet/files/*.parquet/ *
此外,我可以有各种编号和名称的镶木地板文件。
是否可以使用 Apache Beam 读取多个 parquet 文件,因为我找到了读取多个 txt 文件的方法?
是的,可以使用 ParquetIO
读取多个 parquet 文件,因为它在后台使用 FileIO
。只需尝试为此使用另一种匹配模式。在您的情况下,它可能是这样的(我希望 folderPath
是“/path/to”):
pipeline.apply(ParquetIO.read(SCHEMA).from(folderPath + File.separator + "parquet" + File.separator + "*" + File.separator + "*"));
或者最后只是双星:
pipeline.apply(ParquetIO.read(SCHEMA).from(folderPath + File.separator + "parquet" + File.separator + "**");
您不能将 .
用作 glob 模式的一部分,因为它可能是文件路径的合法部分。使用 ?
匹配单个目录中的任何单个字符或 *
匹配任何字符串。此外,“**”模式匹配任何字符串,并跨越目录边界。