@InterfaceAudience.Private public class DynamicClassLoader extends ClassLoaderBase
The configured folder can be a HDFS path. In this case, the jar files under that folder will be copied to local at first under ${hbase.local.dir}/jars/. The local copy will be updated if the remote copy is updated, according to its last modified timestamp.
We can't unload a class already loaded. So we will use the existing jar files we already know to load any class which can't be loaded using the parent class loader. If we still can't load the class from the existing jar files, we will check if any new jar file is added, if so, we will load the new jar file and try to load the class again. If still failed, a class not found exception will be thrown.
Be careful in uploading new jar files and make sure all classes are consistent, otherwise, we may not be able to load your classes properly.
DEFAULT_LOCAL_DIR, LOCAL_DIR_KEY, parent
Constructor and Description |
---|
DynamicClassLoader(Configuration conf,
ClassLoader parent)
Creates a DynamicClassLoader that can load classes dynamically
from jar files under a specific folder.
|
Modifier and Type | Method and Description |
---|---|
Class<?> |
loadClass(String name) |
getClassLoadingLock
addURL, close, definePackage, findClass, findResource, findResources, getPermissions, getResourceAsStream, getURLs, newInstance, newInstance
defineClass, defineClass
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findLibrary, findLoadedClass, findSystemClass, getPackage, getPackages, getParent, getResource, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, registerAsParallelCapable, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
public DynamicClassLoader(Configuration conf, ClassLoader parent)
conf
- the configuration for the cluster.parent
- the parent ClassLoader to set.public Class<?> loadClass(String name) throws ClassNotFoundException
loadClass
in class ClassLoader
ClassNotFoundException