Hive / Phoenix + Druid + JdbcTemplate 의 Spring Boot 통합

8269 단어 hadoopspringboot
POM 의존
작가 의 hadop 클 러 스 터 환경 은 HDFS, YARN, MapReduce 2: 2.7.3 이다.
Hive : 1.2.1000
HBase : 1.1.2
주: phoenix 버 전의 의존성 이 비교적 강 하 므 로 발행 판 간 의 차이 에 주의 하 십시오 (클 러 스 터 서버 에서 jar 패 키 지 를 직접 가 져 오 는 것 이 가장 신뢰 할 수 있 습 니 다)

	UTF-8
	2.4.0.RELEASE
	1.2.1
        4.7
       1.0.27



	
		org.springframework.boot
		spring-boot-starter-jdbc
	
	
		org.springframework.data
		spring-data-hadoop
		${spring-data-hadoop.version}
	
	
		org.apache.hive
		hive-jdbc
		${hive.version}
	
        
          org.apache.phoenix
          phoenix-client
          ${phoenix-client.version}
     
       
		com.alibaba
		druid
		${druid.version}
	

2. spring boot 설정 파일
spring boot 는 기본적으로 Yml 와 properties 설정 파일 을 사용 하 는 것 을 추천 하기 때 문 입 니 다.따라서 저 자 는 여기 서 Yml 방식 을 예 로 들 었 습 니 다.
application.yml:
# hive         
hive:
  url: jdbc:hive2://192.168.61.43:10000/default
  type: com.alibaba.druid.pool.DruidDataSource
  driver-class-name: org.apache.hive.jdbc.HiveDriver
  username: hive
  password: hive

# phoenix         
phoenix:
  enable: true
  url: jdbc:phoenix:192.168.61.43
  type: com.alibaba.druid.pool.DruidDataSource
  driver-class-name: org.apache.phoenix.jdbc.PhoenixDriver
  username: 
  password: 
  default-auto-commit: true

물론 druid 는 다른 선택 할 수 있 는 설정 이 많 으 니 독자 스스로 고려 하 시기 바 랍 니 다.
max-active: 100
initialSize: 1
maxWait: 60000
minIdle: 1
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxOpenPreparedStatements: 50

3. spring boot 설정 Bean 구현
상기 설정 정 보 는 사용자 정의 정보 이기 때문에 spring boot 의 auto configuration 은 인 코딩 자의 의 도 를 완전히 이해 하지 못 하기 때문에 데이터 원본 Bean 을 수 동 으로 만들어 야 합 니 다.
Hive:
/**
 * hive     
 * @author chenty
 *
 */
@Configuration
public class HiveDataSource {
	
	@Autowired
	private Environment env;

	@Bean(name = "hiveJdbcDataSource")
	@Qualifier("hiveJdbcDataSource")
	public DataSource dataSource() {
		DruidDataSource dataSource = new DruidDataSource();
		dataSource.setUrl(env.getProperty("hive.url"));
		dataSource.setDriverClassName(env.getProperty("hive.driver-class-name"));
		dataSource.setUsername(env.getProperty("hive.username"));
		dataSource.setPassword(env.getProperty("hive.password"));
		return dataSource;
	}
	
	@Bean(name = "hiveJdbcTemplate")
	public JdbcTemplate hiveJdbcTemplate(@Qualifier("hiveJdbcDataSource") DataSource dataSource) {
		return new JdbcTemplate(dataSource);
	}

}

Phoenix:
/**
 * phoenix     
 * @author chenty
 *
 */
@Configuration
public class PhoenixDataSource {
	
	@Autowired
	private Environment env;

	@Bean(name = "phoenixJdbcDataSource")
	@Qualifier("phoenixJdbcDataSource")
	public DataSource dataSource() {
		DruidDataSource dataSource = new DruidDataSource();
		dataSource.setUrl(env.getProperty("phoenix.url"));
		dataSource.setDriverClassName(env.getProperty("phoenix.driver-class-name"));
		dataSource.setUsername(env.getProperty("phoenix.username"));//phoenix        
		dataSource.setPassword(env.getProperty("phoenix.password"));//phoenix       
		dataSource.setDefaultAutoCommit(Boolean.valueOf(env.getProperty("phoenix.default-auto-commit")));
		return dataSource;
	}
       
        @Bean(name = "phoenixJdbcTemplate")
     public JdbcTemplate phoenixJdbcTemplate(@Qualifier("phoenixJdbcDataSource") DataSource dataSource) {
          return new JdbcTemplate(dataSource);
     }
}

데이터 원본 테스트
다음 에 우 리 는 테스트 클래스 에 hive / phoenix 의 JdbcTemplate 를 주입 하면 hive / phoenix 의 데이터 상호작용 을 실현 할 수 있 습 니 다.
Hive:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(HiveServiceApplication.class)
public class MainTest {
	
	@Autowired
	@Qualifier("hiveJdbcTemplate")
	JdbcTemplate hiveJdbcTemplate;
	
	@Test  
	public void DataSourceTest() { 
		
		// create table
		StringBuffer sql = new StringBuffer("create table IF NOT EXISTS ");
		sql.append("HIVE_TEST1 ");
		sql.append("(KEY INT, VALUE STRING) ");
		sql.append("PARTITIONED BY (S_TIME DATE)"); //     
		sql.append("ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '
' "); // sql.append("STORED AS TEXTFILE"); // // drop table // StringBuffer sql = new StringBuffer("DROP TABLE IF EXISTS "); // sql.append("HIVE_TEST1"); hiveJdbcTemplate.execute(sql.toString()); } }

Phoenix:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(HBaseServiceApplication.class)
public class MainTest {
	
	@Autowired
        @Qualifier("phoenixJdbcTemplate")
       JdbcTemplate phoenixJdbcTemplate;
	
	@Test  
	public void DataSourceTest() {  	
		//phoenix
		phoenixJdbcTemplate.execute("create table IF NOT EXISTS PHOENIX_TEST2 (ID INTEGER not null primary key, Name varchar(20),Age INTEGER)");
	} 

}

전통 방식
spring boot 자 체 는 전통 적 인 xml 설정 을 추천 하지 않 지만 실제 생산 과정 에서 각종 객관 적 인 요소 로 인해 우 리 는 전통 적 인 xml 형식의 설정 파일 을 도입 해 야 할 때 가 있 습 니 다.따라서 hive / phoenix 에 대해 xml 로 파일 을 설정 하고 spring boot 에서 어떻게 실현 하 는 지 에 대해 간단 한 소 개 를 하 겠 습 니 다.
application.xml:


	
	


	
	
	
	
	  
	  
	  
	  
	  
	  
	  
	




    
    


    
      
      
      
      
      
      
      
      
    
      
    


테스트 구현:
xml 설정 이 있 습 니 다. 저 희 는 상기 네 번 째 단계 테스트 류 의 클래스 정의 에 다음 과 같은 주 해 를 추가 하면 xml 설정 파일 정보의 로드 를 실현 할 수 있 습 니 다.
@ImportResource({"classpath:application.xml","..."})

메모: 설정 파일 에 있 는 bean 의 이름 은 주 해 를 주입 하 는 이름과 일치 해 야 합 니 다.

좋은 웹페이지 즐겨찾기