Package org.apache.flink.table.resource
Class ResourceManager
- java.lang.Object
-
- org.apache.flink.table.resource.ResourceManager
-
- All Implemented Interfaces:
Closeable,AutoCloseable
@Internal public class ResourceManager extends Object implements Closeable
A manager for dealing with all user defined resource.
-
-
Field Summary
Fields Modifier and Type Field Description protected Map<org.apache.flink.table.resource.ResourceUri,URL>resourceInfosprotected org.apache.flink.util.MutableURLClassLoaderuserClassLoader
-
Constructor Summary
Constructors Constructor Description ResourceManager(org.apache.flink.configuration.ReadableConfig config, org.apache.flink.util.MutableURLClassLoader userClassLoader)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddJarConfiguration(TableConfig tableConfig)Adds the local jar resources to the givenTableConfig.protected voidcheckPath(org.apache.flink.core.fs.Path path, org.apache.flink.table.resource.ResourceType expectedType)voidclose()static ResourceManagercreateResourceManager(URL[] urls, ClassLoader parent, org.apache.flink.configuration.ReadableConfig config)booleanexists(org.apache.flink.core.fs.Path filePath)Check whether thePathexists.Set<URL>getLocalJarResources()Get the local jars' URL.Map<org.apache.flink.table.resource.ResourceUri,URL>getResources()protected URLgetURLFromPath(org.apache.flink.core.fs.Path path)URLClassLoadergetUserClassLoader()StringregisterFileResource(org.apache.flink.table.resource.ResourceUri resourceUri)Register a file resource intoResourceManagerand return the absolute local file path without the scheme.voidregisterJarResources(List<org.apache.flink.table.resource.ResourceUri> resourceUris)Due to anyone of the resource in list maybe fail during register, so we should stage it before actual register to guarantee transaction process.voidsyncFileResource(org.apache.flink.table.resource.ResourceUri resourceUri, java.util.function.Consumer<String> resourceGenerator)Generate a local file resource by the given resource generator and then synchronize to the path identified by the givenResourceUri.
-
-
-
Method Detail
-
createResourceManager
public static ResourceManager createResourceManager(URL[] urls, ClassLoader parent, org.apache.flink.configuration.ReadableConfig config)
-
registerJarResources
public void registerJarResources(List<org.apache.flink.table.resource.ResourceUri> resourceUris) throws IOException
Due to anyone of the resource in list maybe fail during register, so we should stage it before actual register to guarantee transaction process. If all the resources are available, register them into theResourceManager.- Throws:
IOException
-
registerFileResource
public String registerFileResource(org.apache.flink.table.resource.ResourceUri resourceUri) throws IOException
Register a file resource intoResourceManagerand return the absolute local file path without the scheme.If the file is remote, it will be copied to a local file, with file name suffixed with a UUID.
- Parameters:
resourceUri- resource with type asResourceType.FILE, the resource uri might or might not contain the uri scheme, or it could be a relative path.- Returns:
- the absolute local file path.
- Throws:
IOException
-
getUserClassLoader
public URLClassLoader getUserClassLoader()
-
getLocalJarResources
public Set<URL> getLocalJarResources()
Get the local jars' URL. Return the URL corresponding to downloaded jars in the local file system for the remote jar. For the local jar, return the registered URL.
-
addJarConfiguration
public void addJarConfiguration(TableConfig tableConfig)
Adds the local jar resources to the givenTableConfig. It implicitly considers theTableConfig.getRootConfiguration()and stores the merged result intoTableConfig.getConfiguration().
-
close
public void close() throws IOException- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Throws:
IOException
-
exists
public boolean exists(org.apache.flink.core.fs.Path filePath) throws IOExceptionCheck whether thePathexists.- Throws:
IOException
-
syncFileResource
public void syncFileResource(org.apache.flink.table.resource.ResourceUri resourceUri, java.util.function.Consumer<String> resourceGenerator) throws IOExceptionGenerate a local file resource by the given resource generator and then synchronize to the path identified by the givenResourceUri. The path passed to resource generator should be a local path retrieved from the givenResourceUri.NOTE: if the given
ResourceUrirepresents a remote file path like "hdfs://path/to/file.json", then the retrieved local path will be "/localResourceDir/file-${uuid}.json"- Parameters:
resourceUri- the file resource uri to synchronize toresourceGenerator- a consumer that generates a local copy of the file resource- Throws:
IOException
-
checkPath
protected void checkPath(org.apache.flink.core.fs.Path path, org.apache.flink.table.resource.ResourceType expectedType) throws IOException- Throws:
IOException
-
getURLFromPath
@VisibleForTesting protected URL getURLFromPath(org.apache.flink.core.fs.Path path) throws IOException
- Throws:
IOException
-
-