本文主要講通過GeoTools API 連接Hbase數據庫,並且獲得數據
- 添加pom依賴
<properties> <geotools.version>20.0</geotools.version> <hbase.version>1.4.5</hbase.version> </properties> <dependencies> <dependency> <groupId>org.geotools</groupId> <artifactId>gt-main</artifactId> <version>${geotools.version}</version> </dependency> <dependency> <groupId>org.geotools</groupId> <artifactId>gt-render</artifactId> <version>${geotools.version}</version> </dependency> <dependency> <groupId>org.geotools</groupId> <artifactId>gt-data</artifactId> <version>${geotools.version}</version> </dependency> <!--// https://mvnrepository.com/artifact/org.locationtech.geomesa/geomesa-hbase-datastore--> <dependency> <groupId>org.locationtech.geomesa</groupId> <artifactId>geomesa-hbase-datastore_2.11</artifactId> <version>2.2.0</version> </dependency> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-protocol</artifactId> <version>${hbase.version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-server</artifactId> <version>${hbase.version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-common</artifactId> <version>${hbase.version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version>${hbase.version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-annotations</artifactId> <version>${hbase.version}</version> <scope>runtime</scope> </dependency> </dependencies> <repositories> <repository> <id>osgeo</id> <name>Open Source Geospatial Foundation Repository</name> <url>http://download.osgeo.org/webdav/geotools/</url> </repository> </repositories>
- Demo代碼
package org.geotools.tutorial.quickstart.demo; import org.geotools.data.DataStore; import org.geotools.data.DataStoreFinder; import org.geotools.data.simple.SimpleFeatureCollection; import org.geotools.data.simple.SimpleFeatureIterator; import org.geotools.data.simple.SimpleFeatureSource; import org.opengis.feature.Property; import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.simple.SimpleFeatureType; import org.opengis.feature.type.AttributeDescriptor; import java.io.IOException; import java.util.*; /** * @author * @DesktopJavaDocable disable */ public class DataStoreHbaseDemo { private static String catalog = "China"; //集群 private static String zookeepers = "172.16.18.8:2181"; private Map getParams() { Map params = new HashMap(); params.put("hbase.zookeepers", zookeepers); params.put("hbase.catalog", catalog); return params; } public void printfHbase() { try { DataStore dataStore = DataStoreFinder.getDataStore(getParams()); if (dataStore != null) { //獲取Catalog下所有的數據表 String[] typeNames = dataStore.getTypeNames(); if (typeNames.length > 0) { //獲取第一張數據表的數據信息 SimpleFeatureSource featureSource = dataStore.getFeatureSource(typeNames[0]); if (featureSource != null) { //獲取該數據表的屬性信息 SimpleFeatureType featureType = featureSource.getSchema(); System.out.println("表名:" + featureType.getTypeName()); System.out.println("字段數:" + featureType.getAttributeCount()); //獲取數據表的屬性(字段)結構 List<AttributeDescriptor> attributeDescriptors = featureType.getAttributeDescriptors(); for (AttributeDescriptor attributeDescriptor : attributeDescriptors) { System.out.println("字段名:" + attributeDescriptor.getLocalName()); } //獲取數據表的記錄信息 SimpleFeatureCollection features = featureSource.getFeatures(); SimpleFeatureIterator featureIterator = features.features(); //打印前10條記錄 int counter = 0; while (featureIterator.hasNext()) { //一條記錄集 SimpleFeature simpleFeature = featureIterator.next(); //獲取記錄集信息 Collection<Property> properties = simpleFeature.getProperties(); Iterator<Property> iterator = properties.iterator(); while (iterator.hasNext()) { Property property = iterator.next(); System.out.println(property.getName().getLocalPart() + ":" + property.getValue().toString()); } if (counter > 10) { break; } counter++; } } } } } catch (IOException e) { e.printStackTrace(); } } }
關於Hbase數連接參數的說明:
hbase.catalog為Hbase數據庫meta信息表,為必填參數;
hbase.zookeepers為Hbase數據zk地址,如果是本機的Hbase數據庫可以不設置,不設置的默認值為localhost;
還有一些選填參數,可以根據需求設置:
- 打印結果