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 org.apache.flink.core.fs.PathlocalResourceDirprotected 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()ResourceManagercopy()static ResourceManagercreateResourceManager(URL[] urls, ClassLoader parent, org.apache.flink.configuration.ReadableConfig config)URLClassLoadercreateUserClassLoader(List<org.apache.flink.table.resource.ResourceUri> resourceUris)voiddeclareFunctionResources(Set<org.apache.flink.table.resource.ResourceUri> resourceUris)Declare a resource for function and add it to the function resource infos.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.voidregisterPythonResources()voidsyncFileResource(org.apache.flink.table.resource.ResourceUri resourceUri, Consumer<String> resourceGenerator)Generate a local file resource by the given resource generator and then synchronize to the path identified by the givenResourceUri.voidunregisterFunctionResources(List<org.apache.flink.table.resource.ResourceUri> resourceUris)Unregister the resource uri in function resources, when the reference count of the resource is 0, the resource will be removed from the function resources.
-
-
-
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
-
declareFunctionResources
public void declareFunctionResources(Set<org.apache.flink.table.resource.ResourceUri> resourceUris) throws IOException
Declare a resource for function and add it to the function resource infos. If the file is remote, it will be copied to a local file. The declared resource will not be added to resources and classloader if it is not used in the job.- Parameters:
resourceUris- the resource uri for function.- Throws:
IOException
-
unregisterFunctionResources
public void unregisterFunctionResources(List<org.apache.flink.table.resource.ResourceUri> resourceUris)
Unregister the resource uri in function resources, when the reference count of the resource is 0, the resource will be removed from the function resources.- Parameters:
resourceUris- the uris to unregister in function resources.
-
registerPythonResources
public void registerPythonResources()
-
getUserClassLoader
public URLClassLoader getUserClassLoader()
-
createUserClassLoader
public URLClassLoader createUserClassLoader(List<org.apache.flink.table.resource.ResourceUri> resourceUris)
-
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().
-
copy
public ResourceManager copy()
-
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, 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
-
-