更新时间:2022-02-22 GMT+08:00

SET/RESET

命令功能

此命令用于动态Add,Update,Display或Reset CarbonData参数,而无需重新启动driver。

命令格式

  • Add或Update参数值:

    SET parameter_name=parameter_value

    此命令用于添加或更新“parameter_name”的值。

  • Display参数值:

    SET parameter_name

    此命令用于显示指定的“parameter_name”的值。

  • Display会话参数:

    SET

    此命令显示所有支持的会话参数。

  • Display会话参数以及使用细节:

    SET -v

    此命令显示所有支持的会话参数及其使用细节。

  • Reset参数值:

    RESET

    此命令清除所有会话参数。

参数描述

表1 SET参数描述

参数

描述

parameter_name

其值需要被动态添加(add),更新(update)或显示(display)的参数名称。

parameter_value

将要设置的“parameter_name”的新值。

注意事项

以下为分别使用SET和RESET命令进行动态设置或清除操作的属性:

表2 属性描述

属性

描述

carbon.options.bad.records.logger.enable

启用或禁用bad record日志记录。

carbon.options.bad.records.action

指定bad record操作,例如,强制(force),重定向(redirect),失败(fail)或忽略(ignore)。有关详细信息,请参阅•Bad Records处理:

carbon.options.is.empty.data.bad.record

指定空数据是否被视为bad record。有关详细信息,请参阅 Bad Records处理:

carbon.options.sort.scope

指定数据加载期间排序的范围。

carbon.options.bad.record.path

指定需要存储bad record的HDFS路径。

carbon.custom.block.distribution

指定是否使用Spark或CarbonData的块分布功能。

enable.unsafe.sort

指定在数据加载期间是否使用不安全的排序。不安全的排序可减少数据加载操作期间的垃圾回收,从而实现更好的性能。

carbon.si.lookup.partialstring

当参数设置为TRUE时,二级索引采用starts-with、ends-with、contains和LIKE分区条件字符串。

当参数设置为FALSE时,二级索引只采用starts-with分区条件字符串。

carbon.input.segments

指定要查询的段ID。 此属性允许您查询指定表的指定段。CarbonScan将仅从指定的段ID读取数据。

语法:

“carbon.input.segments. <database_name>. <table_name> = < list of segment ids >”

如果用户想在多线程模式下查询指定段,可使用CarbonSession.threadSet代替SET语句。

语法:

“CarbonSession.threadSet ("carbon.input.segments. <database_name>. <table_name>","< list of segment ids >");”

说明:

不建议在carbon.properties文件中设置该属性,因为所有会话都包含段列表,除非发生会话级或线程级覆盖。

示例

  • 添加(Add)或更新(Update):

    SET enable.unsafe.sort=true

  • 显示(Display)属性值:

    SET enable.unsafe.sort

  • 显示段ID列表,段状态和其他所需详细信息的示例,然后指定要读取的段列表:

    SHOW SEGMENTS FOR TABLE carbontable1;

    SET carbon.input.segments.db.carbontable1 = 1, 3, 9;

  • 多线程模式查询指定段示例如下:

    CarbonSession.threadSet ("carbon.input.segments.default.carbon_table_MulTI_THread", "1,3");

  • 在多线程环境中使用CarbonSession.threadSet查询段示例如下(以Scala代码为例):
    def main(args: Array[String]) {
     Future {              CarbonSession.threadSet("carbon.input.segments.default.carbon_table_MulTI_THread", "1")
          spark.sql("select count(empno) from carbon_table_MulTI_THread").show()
        }
    }
  • 重置(Reset):

    RESET

系统响应

  • 若运行成功,将记录在driver日志中。
  • 若出现故障,将显示在用户界面(UI)中。