You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@flink.apache.org by Lian Jiang <ji...@gmail.com> on 2020/07/11 00:06:46 UTC

Table API throws "No FileSystem for scheme: file" when loading local parquet

Hi,

I am trying Table API in Flink 1.11:

tEnv.executeSql("CREATE TABLE people (\n" +
        "    id  INT,\n" +
        "    name STRING\n" +
        ") WITH (\n" +
        "    'connector' = 'filesystem',\n" +
        "    'path'     = 'file:///data/test.parquet',\n" +
        "    'format'    = 'parquet',\n" +
        "    'properties.bootstrap.servers' = 'kafka:9092'\n" +
        ")");

It failed:

jobmanager_1      | java.io.IOException: No FileSystem for scheme: file
jobmanager_1      |     at
org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2799)
~[?:?]
jobmanager_1      |     at
org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2810)
~[?:?]
jobmanager_1      |     at
org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:100) ~[?:?]
jobmanager_1      |     at
org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2849)
~[?:?]
jobmanager_1      |     at
org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2831) ~[?:?]
jobmanager_1      |     at
org.apache.hadoop.fs.FileSystem.get(FileSystem.java:389) ~[?:?]
jobmanager_1      |     at
org.apache.hadoop.fs.Path.getFileSystem(Path.java:356) ~[?:?]
jobmanager_1      |     at
org.apache.parquet.hadoop.util.HadoopInputFile.fromPath(HadoopInputFile.java:38)
~[?:?]
jobmanager_1      |     at
org.apache.parquet.hadoop.ParquetFileReader.readFooter(ParquetFileReader.java:448)
~[?:?]
jobmanager_1      |     at
org.apache.flink.formats.parquet.vector.ParquetColumnarRowSplitReader.<init>(ParquetColumnarRowSplitReader.java:125)
~[?:?]
jobmanager_1      |     at
org.apache.flink.formats.parquet.vector.ParquetSplitReaderUtil.genPartColumnarRowReader(ParquetSplitReaderUtil.java:131)
~[?:?]
jobmanager_1      |     at
org.apache.flink.formats.parquet.ParquetFileSystemFormatFactory$ParquetInputFormat.open(ParquetFileSystemFormatFactory.java:173)
~[?:?]
jobmanager_1      |     at
org.apache.flink.formats.parquet.ParquetFileSystemFormatFactory$ParquetInputFormat.open(ParquetFileSystemFormatFactory.java:128)
~[?:?]
jobmanager_1      |     at
org.apache.flink.streaming.api.functions.source.InputFormatSourceFunction.run(InputFormatSourceFunction.java:85)
~[flink-dist_2.11-1.11.0.jar:1.11.0]
jobmanager_1      |     at
org.apache.flink.streaming.api.operators.StreamSource.run(StreamSource.java:100)
~[flink-dist_2.11-1.11.0.jar:1.11.0]
jobmanager_1      |     at
org.apache.flink.streaming.api.operators.StreamSource.run(StreamSource.java:63)
~[flink-dist_2.11-1.11.0.jar:1.11.0]
jobmanager_1      |     at
org.apache.flink.streaming.runtime.tasks.SourceStreamTask$LegacySourceFunctionThread.run(SourceStreamTask.java:201)
~[flink-dist_2.11-1.11.0.jar:1.11.0]
job


The pom.xml has below dependencies:

<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-parquet_2.11</artifactId>
    <version>1.11.0</version>
</dependency>
<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-core</artifactId>
    <version>1.11.0</version>
</dependency>
<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-connector-filesystem_2.12</artifactId>
    <version>1.11.0</version>
</dependency>
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.12</artifactId>
    <version>2.4.4</version>
</dependency>
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-common</artifactId>
    <version>2.8.4</version>
</dependency>

Any idea? Thanks!


Regards

Leon

Re: Table API throws "No FileSystem for scheme: file" when loading local parquet

Posted by Leonard Xu <xb...@gmail.com>.
Hi, Leon


The exception comes from Hadoop side,  looks like you missed some Hadoop dependencies.
Hadoop is needed for Parquet,  compared to add Hadoop-related dependencies directly, it’s recommended to set HADOOP_CLASSPATH or  use flink shaded hadoop uber jar[1].

Best,
Leonard Xu
[1]https://ci.apache.org/projects/flink/flink-docs-master/ops/deployment/hadoop.html#using-flink-shaded-hadoop-2-uber-jar-for-resolving-dependency-conflicts-legacy <https://ci.apache.org/projects/flink/flink-docs-master/ops/deployment/hadoop.html#using-flink-shaded-hadoop-2-uber-jar-for-resolving-dependency-conflicts-legacy>

> 在 2020年7月11日,08:06,Lian Jiang <ji...@gmail.com> 写道:
> 
> Hi,
> 
> I am trying Table API in Flink 1.11:
> 
> tEnv.executeSql("CREATE TABLE people (\n" +
>         "    id  INT,\n" +
>         "    name STRING\n" +
>         ") WITH (\n" +
>         "    'connector' = 'filesystem',\n" +
>         "    'path'     = 'file:///data/test.parquet',\n" +
>         "    'format'    = 'parquet',\n" +
>         "    'properties.bootstrap.servers' = 'kafka:9092'\n" +
>         ")");
> 
> It failed:
> 
> jobmanager_1      | java.io.IOException: No FileSystem for scheme: file
> jobmanager_1      |     at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2799) ~[?:?]
> jobmanager_1      |     at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2810) ~[?:?]
> jobmanager_1      |     at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:100) ~[?:?]
> jobmanager_1      |     at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2849) ~[?:?]
> jobmanager_1      |     at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2831) ~[?:?]
> jobmanager_1      |     at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:389) ~[?:?]
> jobmanager_1      |     at org.apache.hadoop.fs.Path.getFileSystem(Path.java:356) ~[?:?]
> jobmanager_1      |     at org.apache.parquet.hadoop.util.HadoopInputFile.fromPath(HadoopInputFile.java:38) ~[?:?]
> jobmanager_1      |     at org.apache.parquet.hadoop.ParquetFileReader.readFooter(ParquetFileReader.java:448) ~[?:?]
> jobmanager_1      |     at org.apache.flink.formats.parquet.vector.ParquetColumnarRowSplitReader.<init>(ParquetColumnarRowSplitReader.java:125) ~[?:?]
> jobmanager_1      |     at org.apache.flink.formats.parquet.vector.ParquetSplitReaderUtil.genPartColumnarRowReader(ParquetSplitReaderUtil.java:131) ~[?:?]
> jobmanager_1      |     at org.apache.flink.formats.parquet.ParquetFileSystemFormatFactory$ParquetInputFormat.open(ParquetFileSystemFormatFactory.java:173) ~[?:?]
> jobmanager_1      |     at org.apache.flink.formats.parquet.ParquetFileSystemFormatFactory$ParquetInputFormat.open(ParquetFileSystemFormatFactory.java:128) ~[?:?]
> jobmanager_1      |     at org.apache.flink.streaming.api.functions.source.InputFormatSourceFunction.run(InputFormatSourceFunction.java:85) ~[flink-dist_2.11-1.11.0.jar:1.11.0]
> jobmanager_1      |     at org.apache.flink.streaming.api.operators.StreamSource.run(StreamSource.java:100) ~[flink-dist_2.11-1.11.0.jar:1.11.0]
> jobmanager_1      |     at org.apache.flink.streaming.api.operators.StreamSource.run(StreamSource.java:63) ~[flink-dist_2.11-1.11.0.jar:1.11.0]
> jobmanager_1      |     at org.apache.flink.streaming.runtime.tasks.SourceStreamTask$LegacySourceFunctionThread.run(SourceStreamTask.java:201) ~[flink-dist_2.11-1.11.0.jar:1.11.0]
> job
> 
> The pom.xml has below dependencies:
> 
> <dependency>
>     <groupId>org.apache.flink</groupId>
>     <artifactId>flink-parquet_2.11</artifactId>
>     <version>1.11.0</version>
> </dependency>
> <dependency>
>     <groupId>org.apache.flink</groupId>
>     <artifactId>flink-core</artifactId>
>     <version>1.11.0</version>
> </dependency>
> <dependency>
>     <groupId>org.apache.flink</groupId>
>     <artifactId>flink-connector-filesystem_2.12</artifactId>
>     <version>1.11.0</version>
> </dependency>
> <dependency>
>     <groupId>org.apache.spark</groupId>
>     <artifactId>spark-core_2.12</artifactId>
>     <version>2.4.4</version>
> </dependency>
> <dependency>
>     <groupId>org.apache.hadoop</groupId>
>     <artifactId>hadoop-common</artifactId>
>     <version>2.8.4</version>
> </dependency>
> 
> Any idea? Thanks!
> 
> 
> Regards
> Leon


Re: Table API throws "No FileSystem for scheme: file" when loading local parquet

Posted by Danny Chan <yu...@gmail.com>.
> No FileSystem for scheme: file

It seems that your path does not work correctly, from the patch you gave, the directly name 'test.parquet’ seems invalid.

Best,
Danny Chan
在 2020年7月11日 +0800 AM8:07,Danny Chan <yu...@gmail.com>,写道:
>
> It seems that your path does not work correctly, from the patch you gave, the directly name 'test.parquet’ seems invalid.