ICE的属性设置

1、ICE的属性即"name=value"值,具体的name范畴可以见后续描述。可以在程序中设置属性值到ICE的运行环境中
   但一定要注意在Communicator::Initialize方法调用之前设置好值,在之后设置的值会被ICE的运行环境忽略
2、属性名不能包含如下前缀:Ice、IceBox、IceGrid、IcePatch2、IceSSL、IceStorm、Freeze、Glacier2
3、属性名称和属性值中开始和结束的空格或者tab字符会被忽略
4、有一个特殊的属性Ice.Warn.UnusedProperties,将其设置为非零值,那么在communicator析构时会检测是否有
   属性从未读取过,则会报告异常,可用来检测是否有哪些属性因为名字拼写错误从未读取
5、设置属性的方式有如下几种
   A、通过简单的命令行参数指定:./server --Ice.Trace.Protocol=1
   B、通过配置文件指定: ./server --Ice.Config=/data/home/server.conf
   C、通过程序实现属性设置:setProperty("Ice.Trace.Protocol", "1");
6、ice的属性配置文件需要遵循以下规则:
   A、配置文件中以#开始的行为注释行
   B、配置文件中的特殊字符'#'、'\'、'='可以通过转移字符'\'来标示
   C、缺省配置文件通过环境变量ICE_CONFIG指定
   D、可以通过命令行参数--Ice.Config特殊指定配置文件路径
   E、命令行上的参数优先级高于配置文件中的优先级
   F、可以通过--Ice.Config指定多个属性配置文件,文件路径间以','分割
   G、不管输属性配置文件还是命令参数,后面的属性值会覆盖前面定义的属性值
7、在命令行上设置属性有如下几种格式:
   A、--Ice.Trace.Protocol=1               //将属性设置为1
   B、--Ice.Trace.Protocol                 //未标示值的属性值为1
   C、--Ice.Trace.Protocol=                //清除默认属性
8、应用程序中可以通过设置Ice.ProgramName来修改运行程序的名称
9、ICE的运行时环境维护一个程序的属性集合PropertiesPtr,可以通过如下方式获取一个属性集合:
   A、调用Ice::createProperties创建一个属性集合
   B、调用Ice::CommunicatorI::getProperties获取系统当前环境的属性集合
   C、调用
10、属性集合Properties提供如下方法用于属性的读写操作:
   A、std::string getProperty(const std::string&);
   B、std::string getPropertyWithDefault(const std::string&, const std::string&);
   C、Ice::Int getPropertyAsInt(const std::string&);
   D、Ice::Int getPropertyAsIntWithDefault(const std::string&, Ice::Int);
   E、PropertyDict getPropertiesForPrefix(const std::string&);
   F、void setProperty(const std::string&, const std::string&);
   G、PropertiesPtr clone();                   // 深度拷贝属性集合
   H、void load(const std::string&);           // 从配置文件中加载属性集合
   I、StringSeq getCommandLineOptions();       // 将属性解析成命令行格式
   J、StringSeq parseCommandLineOptions(const std::string&, const StringSeq&); // 从StringSeq中匹配前缀的参数解析成属性,并移除对应值
   K、StringSeq parseIceCommandLineOptions(const StringSeq&); // 从StringSeq中解析ICE运行环境属性,并移除对应值
11、setProperty方法一般需要在调用Communicator::initialize之前调用,常用的调用格式如下:
    Ice::InitializationData id;
    id.properties = Ice::createProperties(args);
    id.properties->setProperty("MyProperties", "abcdefg");
    _communicator = Ice::initialize(id);
12、属性集合对象提供的方法好多是基于StringSeq的,但是有些时候我们需要的是argc、argv这样的参数,那么ICE提供方法在其间进行转换:
    StringSeq Ice::argsToStringSeq(int argc, char* argv[]);
void Ice::stringSeqToArgs(const StringSeq& args, int& argc, char* argv[]);
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hive 3 可以通过使用 Hudi 和 Iceberg 插件来适配它们。 对于 Hudi,可以使用以下步骤进行适配: 1. 下载 Hudi 插件,并将其添加到 Hive 的 CLASSPATH 中。 2. 创建 Hudi 表时,需要指定表类型为 "Hudi",并且使用 Hudi 相关的属性设置。 3. 对于已有的 Hive 表,可以使用 CTAS(Create Table As Select)语句将其转换为 Hudi 表。例如: ``` CREATE TABLE my_table STORED AS ORC AS SELECT * FROM existing_table ``` 可以改为: ``` CREATE TABLE my_hudi_table USING org.apache.hudi OPTIONS ( ... ) AS SELECT * FROM existing_table ``` 对于 Iceberg,可以使用以下步骤进行适配: 1. 下载 Iceberg 插件,并将其添加到 Hive 的 CLASSPATH 中。 2. 创建 Iceberg 表时,需要指定表类型为 "Iceberg",并且使用 Iceberg 相关的属性设置。 3. 对于已有的 Hive 表,可以使用 CTAS(Create Table As Select)语句将其转换为 Iceberg 表。例如: ``` CREATE TABLE my_table STORED AS ORC AS SELECT * FROM existing_table ``` 可以改为: ``` CREATE TABLE my_iceberg_table USING org.apache.iceberg OPTIONS ( ... ) AS SELECT * FROM existing_table ``` 需要注意的是,Hive 3 默认支持 ACID(原子性、一致性、隔离性、持久性)和事务,而 Hudi 和 Iceberg 也都支持 ACID 和事务。因此,在使用 Hudi 和 Iceberg 插件时,需要将 Hive 的 ACID 和事务功能关闭,以避免冲突。可以通过将相关配置项设置为 false 来关闭 ACID 和事务功能。例如: ``` SET hive.support.concurrency=false; SET hive.txn.manager=false; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值