Create a connection object
To connect to Bigtable using the Cloud Bigtable HBase client
for Java, you'll need to set configuration properties, then create a
Connection
object. Creating a Connection
object is
a heavyweight operation, so create as few of these objects as possible:
- If you use replication, or if you use app
profiles to identify different types of traffic to your instance,
create one
Connection
object per app profile and share the objects among threads in your application. - If you don't use replication or app profiles, create a single
Connection
object and share it among threads in your application.
There are a few ways to specify the configuration settings for a Connection
object:
Include the settings in your code. If your application uses multiple app profiles (for example, if it performs several different functions, with a separate app profile for each function), you must use this option.
You can also use this option if you prefer to keep configuration settings in your application's code, or if it's not practical to include an external configuration file as a resource in your application.
Use an
hbase-site.xml
file to store settings. Use this option if your application uses both HBase and Bigtable, or if you prefer to keep your Bigtable configuration settings in a standalone file.
The following sections explain each way to configure and create a Connection
object.
Including settings in your code
The following example shows how you might create a Connection
object in your
own application. Replace [VALUES_IN_BRACKETS]
with the correct values for your
instance:
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);
}
}
Using an hbase-site.xml file
This section explains how to create a Connection
object by including the
configuration settings in an hbase-site.xml
file.
Sample code
The following example shows how you might configure and create a Connection
object in your own application:
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);
}
}
A separate hbase-site.xml
file is included in the JAR file's resources. When
you create the Configuration
object, the Cloud Bigtable HBase client
for Java automatically reads the settings from the hbase-site.xml
file.
The following sections explain how to implement this method in your application.
Creating the hbase-site.xml file
In your project's src/main/resources
directory, create a file called
hbase-site.xml
. The file should contain all of the properties shown in the
following example. Replace [VALUES_IN_BRACKETS]
with the correct values for
your instance:
<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>
Adding hbase-site.xml to the JAR file
After you create the hbase-site.xml
file, you'll need to update your build
script to include the src/main/resources
directory in your project's JAR file.
If you're using Maven, edit the <build>
element of your pom.xml
file to
copy the resources to your JAR file:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
Creating the Connection object
Now you can update your code to create a Configuration
object. When you create
this object, the Cloud Bigtable HBase client for Java automatically
reads the settings from the hbase-site.xml
file. You can then use these
settings to create a Connection
object:
Configuration config = HBaseConfiguration.create();
connection = ConnectionFactory.createConnection(config);
What's next
- Learn more about the HBase client for Java.
- View a "hello world" example.
- Find out how to use the client library.