本文主要介绍在HBase Ganos开通后,如何通过Ganos接口进行后续开发工作。

代码示例

  • 下载代码示例

    下载代码后,请根据实际情况,修改pom.xml文件中的依赖。

  • 代码示例说明。
    • trajectory-sample模块
      以AIS数据为例,展示了对轨迹数据的写入、查询功能,其中:
      • Main: 示例程序入口。
      • Writer:向HBase Ganos写入数据,具体包括如下步骤:连接HBase Ganos,创建Schema(时空索引表),读取示例数据,写入到时空索引表中。
      • Reader:通用查询接口,包括:属性查询(等值查询、前缀后缀查询),空间查询和时空查询等。
    • spark-sample模块
      以AIS数据为例,展示了对轨迹数据的写入、Spark查询分析等功能,其中:
      • Writer:向HBase Ganos写入数据,具体包括如下步骤:连接HBase Ganos,创建Schema(时空索引表),读取示例数据,写入到时空索引表。
      • SparkDemo: 从HBase Ganos读取数据,转换为Spark DF模型,并基于SparkSQL进行空间查询等操作。

依赖配置

可以选择使用GeoMesa客户端或Ganos客户端,其中Ganos客户端支持更加丰富的特性。

GeoMesa客户端

HBase Ganos兼容开源的GeoMesa客户端,用户在不使用Ganos特定的功能优化时,可以直接集成GeoMesa客户端。

GeoMesa客户端只适应基于HBase 1.x版本的Ganos,配置代码如下:
<properties>
       <!-- 注意:此处填写对应的hbase client版本号 -->
       <alihbase.version>1.3.1</alihbase.version>
</properties>

<dependency>
        <groupId>org.locationtech.geomesa</groupId>
        <artifactId>geomesa-hbase-datastore_2.11</artifactId>
        <version>2.2.1</version>
        <exclusions>
            <exclusion>
                <groupId>com.google.protobuf</groupId>
                <artifactId>protobuf-java</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <!-- 依赖alihbase -->
      <dependency>
      <groupId>com.aliyun.hbase</groupId>
      <artifactId>alihbase-client</artifactId>
      <version>${alihbase.version}</version>
      <exclusions>
        <exclusion>
          <artifactId>com.google.guava</artifactId>
          <groupId>guava</groupId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>com.aliyun.hbase</groupId>
      <artifactId>alihbase-server</artifactId>
      <version>${alihbase.version}</version>
    </dependency>
    <dependency>
      <groupId>com.aliyun.hbase</groupId>
      <artifactId>alihbase-common</artifactId>
      <version>${alihbase.version}</version>
    </dependency>
    <dependency>
      <groupId>com.aliyun.hbase</groupId>
      <artifactId>alihbase-protocol</artifactId>
      <version>${alihbase.version}</version>
    </dependency>

Ganos客户端

  • 基于HBase 1.x的版本
    注意 目前该版本的依赖包只能下载之后集成,单击ganos-hbase-distributed-runtime_2.11-2.2.1-2.1.0.jar下载后,按照如下配置即可。
    <properties>
         <!-- 注意:此处填写对应的hbase client版本号 -->
         <alihbase.version>1.3.1</alihbase.version>
    </properties>
    
    <dependency>
            <groupId>com.aliyun.tst.ganos</groupId>
            <artifactId>ganos-geomesa-hbase15</artifactId>
            <version>2.0.0</version>
            <scope>system</scope>
            <systemPath>/ganos-jar-path</systemPath>
          </dependency>
          <!-- 依赖alihbase -->
          <dependency>
          <groupId>com.aliyun.hbase</groupId>
          <artifactId>alihbase-client</artifactId>
          <version>${alihbase.version}</version>
          <exclusions>
            <exclusion>
              <artifactId>com.google.guava</artifactId>
              <groupId>guava</groupId>
            </exclusion>
          </exclusions>
        </dependency>
        <dependency>
          <groupId>com.aliyun.hbase</groupId>
          <artifactId>alihbase-server</artifactId>
          <version>${alihbase.version}</version>
        </dependency>
        <dependency>
          <groupId>com.aliyun.hbase</groupId>
          <artifactId>alihbase-common</artifactId>
          <version>${alihbase.version}</version>
        </dependency>
        <dependency>
          <groupId>com.aliyun.hbase</groupId>
          <artifactId>alihbase-protocol</artifactId>
          <version>${alihbase.version}</version>
        </dependency>
  • 基于HBase 2.x的版本
    注意 目前该版本的依赖包只能下载之后集成,单击ganos-hbase-distributed-runtime_2.11-2.2.1-2.5.0.jar下载。
    <properties>
        <!-- 注意:此处填写对应的hbase client版本号 -->
        <alihbase.version>2.0.0</alihbase.version>
    </properties>
    
    <dependency>
          <groupId>com.aliyun.tst.ganos</groupId>
          <artifactId>ganos-geomesa-hbase20</artifactId>
          <version>2.5.0</version>
          <scope>system</scope>
          <systemPath>/ganos-jar-path</systemPath>
        </dependency>
          <!-- 依赖alihbase -->
          <dependency>
          <groupId>com.aliyun.hbase</groupId>
          <artifactId>alihbase-client</artifactId>
          <version>${alihbase.version}</version>
          <exclusions>
            <exclusion>
              <artifactId>com.google.guava</artifactId>
              <groupId>guava</groupId>
            </exclusion>
          </exclusions>
        </dependency>
        <dependency>
          <groupId>com.aliyun.hbase</groupId>
          <artifactId>alihbase-server</artifactId>
          <version>${alihbase.version}</version>
        </dependency>
        <dependency>
          <groupId>com.aliyun.hbase</groupId>
          <artifactId>alihbase-common</artifactId>
          <version>${alihbase.version}</version>
        </dependency>
        <dependency>
          <groupId>com.aliyun.hbase</groupId>
          <artifactId>alihbase-protocol</artifactId>
          <version>${alihbase.version}</version>
        </dependency>