通过以下示例,我成功地保存和加载了ignite的spark数据框:https://apacheignite-fs.readme.io/docs/ignite-data-frame
按照代码示例,在点燃缓存时创建它时,它会自动具有一个名称,例如“ SQL_PUBLIC_name_of_table_in_spark”。
另一方面,如果要更改某些缓存配置,则需要在创建点火缓存之前在xml或代码中指定相同的缓存名称。因为创建缓存后无法更改缓存配置。请参阅以下代码。
<bean class="org.apache.ignite.configuration.IgniteConfiguration">
<property name="cacheConfiguration">
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<!-- Set a cache name. -->
<property name="name" value="SQL_PUBLIC_name_of_table_in_spark"/>
<!-- Set cache mode. -->
<property name="cacheMode" value="PARTITIONED"/>
</bean>
</property>
</bean>
然后其中之一将被“缓存已存在”拒绝。结果是我无法通过xml /代码更改任何缓存配置。
这是预期的吗?在这种情况下,如何更改缓存配置?
答案 0 :(得分:1)
您链接的文档页面包含创建SQL表的代码段:
CREATE TABLE person (
id LONG,
name VARCHAR,
city_id LONG,
PRIMARY KEY (id, city_id)
) WITH "backups=1, affinityKey=city_id”;
此SQL命令是实际创建缓存的内容。您可以更改此命令来更改将要创建的缓存的参数。请参阅CREATE TABLE
doc。
尤其是,提供最大灵活性的参数是WITH template=mytemplate
。它使您可以从预先存在的模板配置中创建缓存。要注册模板,您可以在cacheConfiguration
中以以星号结尾的名称进行指定,例如
<bean class="org.apache.ignite.configuration.IgniteConfiguration">
<property name="cacheConfiguration">
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<property name="name" value="mytemplate*"/>
<!-- your parameters. -->
</bean>
</property>
</bean>
如果表是由Spark自动创建的,则还可以在WITH
设置中为CREATE TABLE
指定OPTION_CREATE_TABLE_PARAMETERS
参数。