Uploaded image for project: 'Flink'
  1. Flink
  2. FLINK-9245

Can't create a BucketingSink with a provided Configuration if no hadoop defaults

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Not A Problem
    • 1.4.2
    • None
    • Connectors / Common
    • None

    Description

      We build Integration tests using this kind of code: 

      val bucketingSink = new BucketingSink[Row]("hdfs:///user/$USER)}/application_name/")
      bucketingSink.setFSConfig(hadoopRule.getConfiguration.hdfs)
      bucketingSink.setBucketer(new DateTimeBucketer[Row]("yyyy-MM-dd--HHmm"))
      outpuStream.addSink(bucketingSink)
      

      Here, the hadoopRule is providing a valid hdfs config that should allows this kind of code to run on a machine with no HADOOP_HOME or HADOOP_CONF_DIR set up, like a developper workstation or a Jenkins slave.

      When running this code on such a machine, the .createHadoopFileSystem(...) fails with 

      The given file system URI (hdfs:///user/$USER/application_name/) did not describe the authority 
      at org.apache.flink.runtime.fs.hdfs.HadoopFsFactory.create(HadoopFsFactory.java:149)
      at org.apache.flink.core.fs.FileSystem.getUnguardedFileSystem(FileSystem.java:401)

      because it tries to instantiate the fileSystem from a default configuration in .getUnguardedFileSystem() ; as the default conf doesn't exist, the default filesystem resolves to "file:///" and the checks of the consistency of the URI fails because no authority can be found So the whole filesystem creation fails before actually trying to use the provided config.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              jcuquemelle Julien Cuquemelle
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: