apache-spark-sql - 如何为 ignite-spark-dataframe 配置缓存?
问题描述
我设法通过此处的示例从 ignite 保存和加载 spark 数据帧:https ://apacheignite-fs.readme.io/docs/ignite-data-frame
通过在 ignite 中创建缓存时遵循代码示例,它会自动具有类似“SQL_PUBLIC_name_of_table_in_spark”的名称。
另一方面,如果我想更改一些缓存配置,我需要在创建 ignite 缓存之前在 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/code 更改任何缓存配置。
这是预期的吗?在这种情况下如何更改缓存配置?
解决方案
您链接的文档页面包含一个创建 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
文档。
特别是,提供最大灵活性的参数是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
推荐阅读
- javascript - 在 Javascript 中,对象可以具有不区分大小写的成员访问权限吗?
- c# - 为本地主机上的任何端口启用 CORS
- excel - Excel 宏 - 删除等号前的前导空格
- firebase - Firebase 数据库:所有使用身份验证版本 2 的 GET 和 POST 请求为 401
- swift - Swift:使用弱自我在基于块的执行中保持原子性
- css - 渐变网格
- excel - 基于组合框的数据透视表过滤
- c - 如何在C中多次读取文件内容
- graphql - 如何在graphql中关联两个表并通过id查询
- javascript - 反应画布与 ref 省略调用 ref.current 和 ctx?