我创建了一个Ignite缓存"联系"并添加了#34; Person"反对它。 当我使用Ignite JDBC Client模式时,我能够查询此缓存。但是当我实现JDBC瘦客户端时,它表示表Person不存在。 我用这种方式尝试了查询:
Select * from Person
Select * from contact.Person
两者都不适用于瘦客户端。我正在使用Ignite 2.1。 感谢您提供有关如何使用瘦客户端查询现有缓存的帮助。 谢谢。
default-config.xml中的缓存配置
<bean id="ignite.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
<!-- Enabling Apache Ignite Persistent Store. -->
<property name="persistentStoreConfiguration">
<bean class="org.apache.ignite.configuration.PersistentStoreConfiguration"/>
</property>
<property name="binaryConfiguration">
<bean class="org.apache.ignite.configuration.BinaryConfiguration">
<property name="compactFooter" value="false"/>
</bean>
</property>
<property name="memoryConfiguration">
<bean class="org.apache.ignite.configuration.MemoryConfiguration">
<!-- Setting the page size to 4 KB -->
<property name="pageSize" value="#{4 * 1024}"/>
</bean>
</property>
<!-- Explicitly configure TCP discovery SPI to provide a list of initial nodes. -->
<property name="discoverySpi">
<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
<property name="ipFinder">
<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder">
<property name="addresses">
<list>
<!-- In distributed environment, replace with actual host IP address. -->
<value>127.0.0.1:55500..55502</value>
</list>
</property>
</bean>
</property>
</bean>
</property>
</bean>
</beans>
代码服务器端的缓存配置
CacheConfiguration<Long, Person> cc = new CacheConfiguration<>(cacheName);
cc.setCacheMode(CacheMode.REPLICATED);
cc.setRebalanceMode(CacheRebalanceMode.ASYNC);
cc.setIndexedTypes(Long.class, Person.class);
cache = ignite.getOrCreateCache(cc);
瘦客户端JDBC网址
Class.forName("org.apache.ignite.IgniteJdbcThinDriver");
// Open the JDBC connection.
Connection conn = DriverManager.getConnection("jdbc:ignite:thin://192.168.1.111:10800");
Statement st = conn.createStatement();
答案 0 :(得分:2)
如果要使用SQL查询现有缓存中的数据,则应在缓存配置中指定SQL架构。在创建缓存之前添加以下代码:
boolContainer.SomeValue
请注意,您已配置持久性,因此当您执行cc.setSqlSchema("PUBLIC");
时,如果已保留具有此名称的缓存,则不会应用新配置。例如,您应该删除持久性数据或改为使用ignite.getOrCreateCache(cc);
方法。