• Geotools系列之Geotools连接Hbase数据库并读取数据


    本文主要讲通过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;

      还有一些选填参数,可以根据需求设置:

      

      

    • 打印结果

      

  • 相关阅读:
    Sprite Kit编程指南(1)-深入Sprite Kit
    无线点菜系统01(需求分析)
    【体系结构】转移预测器性能的定量评价
    数据挖掘的常见方法
    hdu1711
    poj3358数论(欧拉定理)
    爬虫提取非结构化数据
    pyDes 实现 Python 版的 DES 对称加密/解密--转
    python2 'str' object has no attribute 'decode'
    vba传递参数类型错误
  • 原文地址:https://www.cnblogs.com/mohanchen/p/10827878.html
Copyright © 2020-2023  润新知