Hive / Phoenix + Druid + JdbcTemplate 의 Spring Boot 통합
작가 의 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 의 이름 은 주 해 를 주입 하 는 이름과 일치 해 야 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Azure HDInsight + Microsoft R Server에서 연산 처리 분산Microsoft Azure HDInsight는 Microsoft가 제공하는 Hadoop의 PaaS 서비스로 인프라 주변의 구축 노하우를 몰라도 훌륭한 Hadoop 클러스터를 구축할 수 있는 훌륭한 서비스입니다. 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.