연결 객체 만들기
Java용 Cloud Bigtable HBase 클라이언트를 사용하여 Bigtable에 연결하려면 구성 속성을 설정한 다음 Connection
객체를 만들어야 합니다. Connection
객체를 만들 때는 많은 작업이 필요하므로 가능한 한 적은 수의 객체를 만듭니다.
- 복제를 사용하거나 앱 프로필을 사용하여 인스턴스로 보내는 여러 유형의 트래픽을 식별하는 경우 앱 프로필 당 하나의
Connection
객체를 만들고 애플리케이션의 스레드 간에 객체를 공유합니다. - 복제 또는 앱 프로필을 사용하지 않는 경우 단일
Connection
객체를 만들고 이를 애플리케이션의 스레드 간에 공유합니다.
Connection
객체의 구성 설정을 지정하는 몇 가지 방법이 있습니다.
코드에 설정을 포함합니다. 함수마다 별도의 앱 프로필을 사용하여 여러 함수를 실행하는 경우와 같이 애플리케이션에서 여러 앱 프로필을 사용하는 경우 이 옵션을 사용해야 합니다.
애플리케이션의 코드에 구성 설정을 유지하려는 경우나 외부 구성 파일을 애플리케이션에 리소스로 포함하는 것이 실용적이지 않은 경우에도 이 옵션을 사용할 수 있습니다.
hbase-site.xml
파일을 사용하여 설정을 저장합니다. 애플리케이션에서 HBase와 Bigtable을 모두 사용하는 경우나 독립형 파일에 Bigtable 구성 설정을 유지하려는 경우 이 옵션을 사용합니다.
다음 섹션에서는 Connection
객체를 구성하고 만드는 각 방법을 설명합니다.
코드에 설정 포함하기
다음 예는 자체 애플리케이션에서 Connection
객체를 만드는 방법을 보여줍니다. 아래에서 [VALUES_IN_BRACKETS]
를 인스턴스에 적합한 값으로 바꿉니다.
package com.example.helloworld;
import com.google.cloud.bigtable.hbase.BigtableConfiguration;
import com.google.cloud.bigtable.hbase.BigtableOptionsFactory;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.Connection;
public class BigtableHelper {
private static final String PROJECT_ID = "[YOUR_PROJECT_ID]";
private static final String INSTANCE_ID = "[YOUR_INSTANCE_ID]";
// Include the following line if you are using app profiles.
// If you do not include the following line, the connection uses the
// default app profile.
private static final STRING APP_PROFILE_ID = "[YOUR_APP_PROFILE_ID]";
private static Connection connection = null;
public static void connect() throws IOException {
Configuration config = BigtableConfiguration.configure(PROJECT_ID, INSTANCE_ID);
// Include the following line if you are using app profiles.
// If you do not include the following line, the connection uses the
// default app profile.
config.set(BigtableOptionsFactory.APP_PROFILE_ID_KEY, APP_PROFILE_ID);
connection = BigtableConfiguration.connect(config);
}
}
hbase-site.xml 파일 사용하기
이 섹션에서는 hbase-site.xml
파일에 구성 설정을 포함하여 Connection
객체를 만드는 방법을 설명합니다.
샘플 코드
다음 예는 자체 애플리케이션에서 Connection
객체를 구성하고 만드는 방법을 보여줍니다.
package com.example.helloworld;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
public class BigtableHelper {
private static Connection connection = null;
public static void connect() throws IOException {
Configuration config = HBaseConfiguration.create();
connection = ConnectionFactory.createConnection(config);
}
}
JAR 파일의 리소스에는 별도의 hbase-site.xml
파일이 포함되어 있습니다. Configuration
객체를 만들면 자바용 Cloud Bigtable HBase 클라이언트가 자동으로 hbase-site.xml
파일에서 설정을 읽습니다.
다음 섹션에서는 애플리케이션에서 이 방식을 구현하는 방법을 설명합니다.
hbase-site.xml 파일 만들기
프로젝트의 src/main/resources
디렉터리에서 hbase-site.xml
이라는 파일을 만듭니다. 다음 예에 표시된 모든 속성이 파일에 포함되어야 합니다. 아래에서 [VALUES_IN_BRACKETS]
를 인스턴스에 적합한 값으로 바꿉니다.
<configuration>
<property>
<name>hbase.client.connection.impl</name>
<value>com.google.cloud.bigtable.hbase1_x.BigtableConnection</value>
</property>
<property>
<name>google.bigtable.project.id</name>
<value>[YOUR_PROJECT_ID]</value>
</property>
<property>
<name>google.bigtable.instance.id</name>
<value>[YOUR_INSTANCE_ID]</value>
</property>
<!--
Include the following property if you are using app profiles.
If you do not include the following property, the connection uses the
default app profile.
-->
<property>
<name>google.bigtable.app_profile.id</name>
<value>[YOUR_APP_PROFILE_ID]</value>
</property>
</configuration>
JAR 파일에 hbase-site.xml 추가하기
hbase-site.xml
파일을 만든 후에는 프로젝트의 JAR 파일에 src/main/resources
디렉터리를 포함하도록 빌드 스크립트를 업데이트해야 합니다.
Maven을 사용하는 경우 pom.xml
파일의 <build>
요소를 수정하여 리소스를 JAR 파일에 복사합니다.
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
Connection 객체 만들기
이제 코드를 업데이트하여 Configuration
객체를 만들 수 있습니다. 이 객체를 만들면 자바용 Cloud Bigtable HBase 클라이언트가 자동으로 hbase-site.xml
파일에서 설정을 읽습니다. 그런 다음 이러한 설정을 사용하여 Connection
객체를 만들 수 있습니다.
Configuration config = HBaseConfiguration.create();
connection = ConnectionFactory.createConnection(config);