如何为ignite-spark-dataframe配置缓存?

时间:2018-10-11 00:03:44

标签: apache-spark-sql ignite

通过以下示例,我成功地保存和加载了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 /代码更改任何缓存配置。

这是预期的吗?在这种情况下,如何更改缓存配置?

1 个答案:

答案 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参数。