Apache Gora 0.9 配置参数详解

详解 Apache Gora 0.9 的配置体系:gora.properties 逐段解读(官方 0.9 样例逐行照抄)、gora.datastore.default 与 13 个 store 模块的专属键矩阵、autocreateschema、mapping 文件与 DataStoreFactory 编程式配置,含实测注意事项

Apache GoraApacheGoraNoSQLORMHBaseJava配置详解参数调优2026/10/15

Apache Gora 0.9 配置参数详解

Gora 的运行时配置几乎全部集中在 classpath 根的 gora.properties(默认加载),由 DataStoreFactory 读取后组装 DataStore。本文实测环境:gora-core 0.9 + gora-compiler-cli 0.9(Ubuntu 22.04 容器,Temurin 17)。官方 0.9 样例(GitHub tag apache-gora-0.9 的 gora-tutorial/conf/gora.properties,75 行)为逐行照抄实拍;标注"参考"的内容来自官方文档与样例。

一、gora.properties 的位置与加载

  • 放 src/main/resources/gora.properties,随工程打包进 classpath 根;
  • DataStoreFactory.createDataStore() 默认从 classpath 读取(也可编程式传入自定义 Properties,见第七章);
  • 注意:该文件不随 gora-core-0.9.jar 发布(实测 jar tf 核验 jar 内仅有 pom.properties),必须自备——从官方仓库 conf 目录获取模板后裁剪。

二、官方 0.9 样例逐段解读

2.1 默认 DataStore:gora.datastore.default

gora.datastore.default=org.apache.gora.hbase.store.HBaseStore
#gora.datastore.default=org.apache.gora.couchdb.store.CouchDBStore
#gora.datastore.default=org.apache.gora.cassandra.store.CassandraStore
#gora.datastore.default=org.apache.gora.solr.store.SolrStore
#gora.datastore.default=org.apache.gora.aerospike.store.AerospikeStore
#gora.datastore.default=org.apache.gora.mongodb.store.MongoStore
#gora.datastore.default=org.apache.gora.avro.store.AvroStore
  • 语义:未在 createDataStore() 显式指定实现类时使用的默认 DataStore;
  • 切换存储 = 换一行注释,前提是 classpath 引入对应 store 模块(gora-hbase / gora-mongodb / gora-cassandra ...,0.9 实际发布的模块清单见介绍篇第四章);
  • 内存实现 org.apache.gora.memory.store.MemStore 无需任何外部服务,适合单测(参考)。

2.2 schema 自动创建

gora.datastore.autocreateschema=true

schema/表不存在时自动创建。开发期建议开启;生产建议关闭并用显式 DDL,避免运行时误建表与结构漂移。

2.3 AvroStore 段(Avro 文件实现,参考)

#gora.avrostore.input.path=hdfs://localhost:9000/gora.avrostore.test.input
#gora.avrostore.output.path=hdfs://localhost:9000/gora.avrostore.test.output
#gora.avrostore.codec.type=JSON || BINARY

AvroStore 是内置的"文件型" DataStore:HDFS 输入/输出路径 + JSON/BINARY 编解码。

2.4 SolrStore 段(样例中未注释、默认生效)

gora.solrstore.solr.url=http://localhost:8983/solr
gora.solrstore.solr.commitwithin=0
gora.solrstore.solr.batchsize=100
gora.solrstore.solr.solrjserver=http   # cloud | concurrent | http | loadbalance
键说明
gora.solrstore.solr.urlSolr Base URL
gora.solrstore.solr.commitwithinSolr commitWithin(毫秒,0=立即提交)
gora.solrstore.solr.batchsize批量 flush 条数
gora.solrstore.solr.solrjserverSolrJ 服务器实现选择

2.5 JCache 段(缓存/主存储双角色)

gora.cache.datastore.default=org.apache.gora.jcache.store.JCacheStore
gora.datastore.jcache.provider=com.hazelcast.cache.impl.HazelcastServerCachingProvider
#gora.datastore.jcache.provider=com.hazelcast.client.cache.impl.HazelcastClientCachingProvider

gora.cache.datastore.default 是缓存层默认实现(与 2.1 的主存储默认分开);provider 键指定 JCache 规范的 Hazelcast 实现类。

2.6 各 store 专属键矩阵(样例原文照抄)

#gora.cassandrastore.servers=localhost:9160

#gora.aerospikestore.server.ip=localhost
#gora.aerospikestore.server.port=3000
#gora.aerospikestore.server.username=
#gora.aerospikestore.server.password=

#gora.mongodb.override_hadoop_configuration=false
#gora.mongodb.mapping.file=/gora-mongodb-mapping.xml
#gora.mongodb.servers=localhost
#gora.mongodb.db=nutchtest
#gora.mongodb.readpreference=primary
#gora.mongodb.writeconcern=acknowledged

命名规律:gora.<store名>store.*(cassandra/aerospike/solr)或 gora.mongodb.*(Mongo 特例)。专属键只随对应 store 模块在 classpath 时生效,写多了无害。

2.7 gora-sql 段(历史模块,0.9 不可用)

样例中保留的 gora.sqlstore.jdbc.*(HSQL/MySQL)属历史模块 gora-sql——0.9 未发布该模块(介绍篇第四章逐模块核实 has-0.9=0),照抄样例会导致 ClassNotFoundException,务必删除。

三、store 模块与配置键对照总表(0.9 可用)

store 模块默认实现类关键配置键依赖服务
gora-coreorg.apache.gora.memory.store.MemStore—(零配置)无
gora-hbaseorg.apache.gora.hbase.store.HBaseStoregora.datastore.defaultHBase
gora-mongodborg.apache.gora.mongodb.store.MongoStoregora.mongodb.servers / db / mapping.fileMongoDB
gora-cassandraorg.apache.gora.cassandra.store.CassandraStoregora.cassandrastore.serversCassandra
gora-solrorg.apache.gora.solr.store.SolrStoregora.solrstore.solr.*Solr
gora-aerospikeorg.apache.gora.aerospike.store.AerospikeStoregora.aerospikestore.server.*Aerospike
gora-jcacheorg.apache.gora.jcache.store.JCacheStoregora.cache.datastore.default / jcache.providerHazelcast 等
gora-couchdborg.apache.gora.couchdb.store.CouchDBStore参考 store 文档CouchDB
gora-dynamodb / gora-ignite / gora-infinispan / gora-lucene / gora-accumulo各自实现参考 store 文档对应服务

四、mapping 文件(各 store 的"对象→表"映射)

schema 注解之外,行键/列名/字段类型映射由各 store 的 mapping XML 定义:

storemapping 文件(默认位置)关键元素
HBasegora-hbase-mapping.xml<table name>、<family>、<field column/family>
MongoDB/gora-mongodb-mapping.xml(gora.mongodb.mapping.file 可改)<document name>、<field name>
Solrgora-solr-mapping.xml<solr-core>、<field name/type>
Cassandragora-cassandra-mapping.xmlkeyspace/table/field

mapping 文件放 classpath 根;文件名可用对应 gora.<store>.mapping.file 类键覆盖(如 MongoDB 的 gora.mongodb.mapping.file)。

五、DataStoreFactory 编程式配置(参考)

DataStore<Person, Long> store =
    DataStoreFactory.getDataStore(Long.class, Person.class, conf);
  • Person 必须实现 org.apache.gora.persistency.Persistent(schema 编译生成,见工具篇);
  • 未传实现类时用 gora.datastore.default;
  • 可用 DataStoreFactory.createDataStore(Class<? extends DataStore> impl, keyClass, persistentClass, conf, Properties props) 传入自定义 Properties 覆盖文件级配置——多 store 共存时按需逐个指定。

六、与 Hadoop Configuration 的关系

Gora 深度绑定 Hadoop Configuration(org.apache.hadoop.conf.Configuration),部分 store(如 MongoDB 有 gora.mongodb.override_hadoop_configuration)可控制是否覆盖 Hadoop 配置。工程不跑 MapReduce 也需 hadoop 依赖在 classpath(gora-core 传递引入)。

七、FAQ

Q1:gora.properties 放哪里生效? classpath 根(src/main/resources/),DataStoreFactory 默认读取;打包后必须出现在 jar 根。

Q2:能不能不用 gora.properties 全走编程式? 可以,用带 Properties 参数的 createDataStore 重载;但框架惯例仍是文件级配置,团队协作更直观。

Q3:切换 store 后报 ClassNotFoundException? 实现类前缀写错或对应 store 模块未引入依赖(第二/三章对照表核对)。

Q4:gora.datastore.default 里的 MemStore 需要配置服务吗? 不需要,纯内存,单测首选;数据不落盘进程结束即失。

Q5:autocreateschema=false 后第一次运行报错? 预期行为——需先手工建表/索引(或 mapping 中定义),再运行。

Q6:同工程能同时用两个 DataStore 吗? 能。编程式 createDataStore 分别指定实现类与专属 Properties;gora.datastore.default 只是兜底。

Q7:solr.solrjserver=cloud 什么时候用? SolrCloud(ZooKeeper 托管)部署;单机/主从用 http。

Q8:mapping 文件热生效吗? 不热加载,改动需重启进程。

Q9:gora.properties 里的注释键会被解析吗? # 开头行忽略;样例大段注释是"可选项目录"而非配置。

Q10:0.9 还支持 gora-sql 吗? 不支持(模块未随 0.9 发布);SQL 场景官方推荐 Solr/JDBC 系替代或停留在 0.8。

参考链接