SqoopConfiguration 객체 소스 분석
SqoopConfiguration 클래스
SqoopConfiguration 클래스의 객체는 sqoop의 구성 정보를 관리하는 데 사용됩니다.다음과 같은 특징이 있습니다.
SqoopConfiguration 초기화
serer는 sqoop의 초기화 과정을 호출합니다.
SqoopConfiguration.getInstance().initialize();
SqoopConfiguration.getInstance().initialize();
/**
* Private instance to singleton of this class.
*/
private static SqoopConfiguration instance;
/**
* Create default object by default.
*
* Every Sqoop server application needs one so this should not be performance issue.
*/
static {
instance = new SqoopConfiguration();
}
/**
* Return current instance.
*
* @return Current instance
*/
public static SqoopConfiguration getInstance() {
return instance;
}
SqoopConfiguration 데이터 구조
SqoopConfiguration은 구성 정보를 관리하는 데 사용됩니다.데이터 구조는 다음과 같습니다.
private File configDir = null;
private boolean initialized = false;
private ConfigurationProvider provider = null;
private Map config = null;
private Map oldConfig = null;
특히 oldConfig 변수는 이전 구성 정보를 저장하는 데 사용됩니다.provider 변수는 설정 정보의 공급자로서 파일에서 설정 정보를 읽는 데 작용합니다.
SqoopConfiguration 계층 관계
SqoopConfiguration은 Reconfigurable 인터페이스를 구현합니다.
/**
* Interface that make Sqoop Server components sensitive to
* configuration file changes at the runtime
*/
public interface Reconfigurable {
/**
* Method to notify each reconfigurable components
*/
public void configurationChanged();
}
Reconfigurable 인터페이스는 플래그 구성을 업데이트할 수 있음을 나타냅니다.oldConfig 변수가 있는 이유이기도 합니다.인터페이스 방법의 실현은 다음과 같다.
@Override
public synchronized void configurationChanged() {
oldConfig = config;
config = provider.getConfiguration();
configureLogging();
}
그중에서provider.getConfiguration은provider를 위해 설정 파일에서 설정 정보를 다시 읽습니다.
SqoopConfiguration의 initialize 프로세스
초기화 프로세스는 주로 다음과 같습니다.
String configDirPath = System.getProperty(
ConfigurationConstants.SYSPROP_CONFIG_DIR); // 1
... //
provider = (ConfigurationProvider) configProviderClass.newInstance(); //step2
.... //
// Initialize the configuration provider
provider.initialize(configDir, bootstrapProperties); //step3
configurationChanged();
provider.registerListener(new CoreConfigurationListener(SqoopConfiguration.getInstance())); //step4
initialized = true; //step5
여기서 step1은 다음과 같습니다.
System.getProperty("sqoop.config.provider")
시스템 변수는 SQOOPHOME 폴더 아래/server/setenv.sh 설정setp4의 CoreConfigurationListener는 SquopConfiguration 클래스의 정적 클래스 구성원입니다.소스 코드는 다음과 같습니다.
public static class CoreConfigurationListener implements ConfigurationListener {
private Reconfigurable listener;
public CoreConfigurationListener(Reconfigurable target) {
listener = target;
}
@Override
public void configurationChanged() {
listener.configurationChanged();
}
}
ConfigurationProvider의 구현
ConfigurationProvider는 인터페이스입니다.그 주요 기능은 설정의 변화 여부를 감청하는 것이다.그런 다음 해당 객체를 업데이트합니다.원본 코드에서Properties Configuration Provider 클래스에서Configuration Provider 인터페이스를 실현했습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.