carbon.storelocation
CarbonData 创建存储并以自己的格式写入数据的位置。如果没有配置这个属性将使用 spark.sql.warehouse.dir 配置的路径。注意:存储路径需要设置成 HDFS 的路径。
carbon.ddl.base.hdfs.url
该属性用于配置 HDFS 的相对路径。在 carbon.ddl.base.hdfs.url 配置的路径将被附加到 fs.defaultFS 配置的 HDFS 路径中。如果用户配置了这个路径,在数据加载的时候就不需要提供完整的路径。比如: csv 文件的绝对路径为 hdfs://10.18.101.155:54310/data/cnbc/2016/xyz.csv,我们可以从 fs.defaultFS 属性获取到 "hdfs://10.18.101.155:54310",用户可以将 carbon.ddl.base.hdfs.url 属性配置成 /data/cnbc/,加载数据的时候,用户只需要提供 /2016/xyz.csv 路径即可。
carbon.badRecords.location
存储坏记录的路径。
carbon.data.file.version
如果这个属性的值设置成 1,则 CarbonData 将支持旧格式的数据加载(0.x版本);如果这个属性的值设置成 2(1.x 以上版本),那么 CarbonData 将仅支持新格式的数据加载
carbon.streaming.auto.handoff.enabled
如果此参数值设置为 true,则会启用自动触发切换功能。
carbon.streaming.segment.max.size
1024000000
此参数定义 streaming segment 的最大大小。将此参数设置为适当的值可以避免对流数据摄取的影响。这个参数的单位是字节。
carbon.query.show.datamaps
如果此参数值设置为 true,show tables 命令将会列出包括 datatmaps(比如: 预聚合表) 的所有表;否则只会列出除 datamaps 之外的所有表。
carbon.segment.lock.files.preserve.hours
此属性值表示在数据加载之后 segment 锁文件将保留的小时数。这些锁文件将在配置的时间后用 clean 命令删除。
block
: 设置此值将为每个块启动一个任务处理。在并发查询且查询具有 shuffling 过程的场景下建议使用此设置。
custom
: 设置此值将对块进行分组并将块均匀地分配到集群中可用的资源。这个设置提升了查询性能,但在并发查询且查询具有很多 shuffling 过程的场景下不建议使用此设置。
blocklet
: 设置此值将为每个 blocklet 启动一个任务处理。在并发查询且查询具有很多 shuffling 过程的场景下建议使用此设置。
merge_small_files
: 设置此值将在查询过程中将所有小分区合并成大小为 128 MB(128MB 是 "spark.sql.files.maxPartitionBytes" 参数的默认值,这个参数是可配置的)。小分区被组合到一个 map 任务中,以减少读取任务的数量。 这个可以提升性能。
carbon.compaction.level.threshold
该属性在 minor compaction 时使用,决定要合并多少个 segments。比如:如果将这个属性设置为 2, 3,那么每 2 个 segments 会触发一次 Level 1 的 minor compaction。每 3 个 Level 1 的 compacted segment 将会进一步压缩成新的 segment。
有效值的范围为 0-100。
carbon.major.compaction.size
Major compaction 大小可以使用这个参数进行配置。segments 大小总和低于此阈值的将会被合并。此值的单位为 MB。
carbon.horizontal.compaction.enable
此属性用于打开/关闭 horizontal compaction。每次 DELETE 或 UPDATE statement 之后, 如果增量(DELETE/UPDATE)文件的个数超过指定的阈值,可能会发生 horizontal compaction。
carbon.horizontal.UPDATE.compaction.threshold
此属性用于限制 segment 中 UPDATE 增量文件的数量。如果增量文件的数量超出此阈值,则该 segment 内的 UPDATE 增量文件将会进行 horizontal compaction,并且会被压缩成单个 UPDATE 增量文件。
有效值的范围为 0-10000。
carbon.horizontal.DELETE.compaction.threshold
此属性用于限制 segment 中一个块的 DELETE 增量文件的数量。如果增量文件的数量超出此阈值,则 segment 内某个块的 DELETE 增量文件将会进行 horizontal compaction,并且会被压缩成单个 DELETE 增量文件。
有效值的范围为 0-10000。
carbon.update.segment.parallelism
此属性指定更新期间每个 segment 的并行数。如果存在包含太多需要更新的记录的 segments,并且 spark 作业遇到数据溢出相关问题,则最好增加此属性值。
有效值的范围为 0-1000。
carbon.sort.file.write.buffer.size
16384
排序过程中写文件缓冲区的大小。最小允许的缓存区大小为 10240 字节,最大允许的缓存区大小为 10485760 字节。
carbon.lock.type
LOCALLOCK
此配置指定在表上执行并发操作期间需要获取的锁类型。有以下类型的锁实现:
-
LOCALLOCK: 锁以文件的形式在本地文件系统上创建。如果一台机器上仅仅有一个 spark driver (thrift server) 运行并且没有其他 CarbonData spark 应用程序同时启动的情况下很有用。
-
HDFSLOCK: 锁以文件的形式在 HDFS 文件系统上创建。当启动多个 CarbonData spark 应用程序并且集群中没有运行 ZooKeeper,而且 HDFS 支持基于文件的锁的情况下很有用。
carbon.sort.intermediate.files.limit
启动合并排序的最小中间文件的数量。(minValue = 2, maxValue=50).
carbon.block.meta.size.reserved.percentage
在 CarbonData 文件中为写入块元数据需要保留的空间,单位为百分比。
carbon.csv.read.buffersize.byte
1048576
csv 读取缓冲区的大小。
carbon.merge.sort.reader.thread
读取中间文件进行最终合并的最大线程数。
carbon.concurrent.lock.retries
并发操作获取锁的最大重试次数。主要用于并发加载。
carbon.concurrent.lock.retry.timeout.sec
并发操作获取锁的重试时间间隔。
carbon.lock.retries
除加载之外的任何操作获取锁的最大重试次数。
carbon.lock.retry.timeout.sec
除加载之外的任何操作获取锁的重试时间间隔。
carbon.skip.empty.line
false
在数据加载过程中,是否忽略 CSV 文件中的空行。
carbon.enable.calculate.size
用于加载操作
: 设置此属性会在每次加载的时候计算 carbon 数据文件(.carbondata)和 carbon 索引文件(.carbonindex)的大小,并更新表的状态文件。
用于格式化描述
: 设置此属性会为特定表计算 carbon 数据文件和 carbon 索引文件的总大小,并且以格式化的形式显示。
carbon.numberof.preserve.segments
如果用户想防止一些 segments 被压缩,可以通过设置这个参数。比如 carbon.numberof.preserve.segments = 2,那么 2 个最新的 segments 总是被排除在压缩之外。默认没有 segments 被保留。
carbon.allowed.compaction.days
在指定的天数内加载的 segment 将被合并。如果配置为 2,仅在 2 天内加载的 segment 被合并,2 天之前的 segment 不会被合并。默认没有被启用。
carbon.enable.auto.load.merge
false
数据加载的时候启用压缩。
carbon.enable.page.level.reader.in.compaction
为压缩启用页面级读取器可减少内存的使用量,同时压缩更多数量的 segments 。它只允许逐页读取,而不是将整个 blocklet 加载到内存中。
carbon.dynamicallocation.schedulertimeout
scheduler 认为 executor 除于活动状态的最长时间(单位是秒)。最小值为 5 秒,最大值为 15 秒。
carbon.scheduler.minregisteredresourcesratio
启动块分配所需的最小资源比率。默认值是 0.8,意味着 80% 的请求资源被用于执行块分配。最小值为 0.1,最大值为 1。
carbon.search.enabled
false
如果设置为 true,将使用 CarbonReader 直接执行分布式扫描,而不是像 spark 那样使用计算框架,从而可以避免计算框架带来的限制,比如 SQL 优化和任务调度开销。
carbon.cutOffTimestamp
设置计算时间戳的开始日期。Java 从 "1970-01-01 00:00:00" 开始计算时间戳。该属性用于自定义开始位置。比如 "2000-01-01 00:00:00"。时间的格式必须符合 carbon.timestamp.format 参数配置的。
carbon.timegranularity
SECOND
该属性用于设置数据粒度级别,有效值为 DAY,HOUR,MINUTE 或 SECOND。
使用 SET-RESET 动态配置 CarbonData
SET/RESET
命令主要用于动态地添加、更新、显示或者重置 carbondata 属性,这些操作不需要重启 driver。
添加或更新 :
这个命令用于更新 parameter_name 属性的值.
SET parameter_name=parameter_value
显示属性的值: 这个命令用于显示 parameter_name 属性的值.
SET parameter_name
显示会话参数: 这个命令显示所有支持的会话参数.
显示会话参数以及使用细节: 这个命令显示所有支持的会话参数及其使用详细信息.
SET -v
重置: 这个命令清除所有会话参数。
RESET
参数说明:
carbon.options.bad.records.action
对坏记录主要有四种类型的操作:FORCE,REDIRECT,IGNORE 和 FAIL。如果设置为 FORCE,则通过将不良记录存储为 NULL 来自动更正数据。如果设置为 REDIRECT,则坏记录将被写入到 csv 文件中而不被加载。如果设置为 IGNORE,则坏记录既不会被写入到 CSV 文件中,也不会被加载。如果设置为 FAIL,数据加载过程中遇到坏记录,则整个数据加载失败。
carbon.options.is.empty.data.bad.record
如果为 false,则空("" 或 '' 或 ,,)的数据不会被视为坏记录,反之亦然。
carbon.options.batch.sort.size.inmb
保存在内存中批量数据的大小,根据经验法则,这个属性最好配置成小于 sort.inmemory.size.inmb 参数的 45%,否则会将中间数据溢出到磁盘。
carbon.options.single.pass
Single Pass 加载可以使用单个作业即时完成数据加载以及字典生成。它增强了在初始加载数据之后的涉及字典上很少增量更新的后续数据加载场景下的性能。该选项指定是否使用 single pass 来加载数据,默认情况下这个属性的值为 FALSE。
carbon.options.bad.record.path
存储坏记录的 HDFS 路径。
carbon.custom.block.distribution
指定是否使用 Spark 或 Carbon 块分布功能。
enable.unsafe.sort
指定在数据加载期间是否使用不安全排序(unsafe sort)。不安全排序会减少数据加载过程中的垃圾回收,从而提高性能。
添加或更新:
SET enable.unsafe.sort =true
显示属性的值:
SET enable.unsafe.sort
RESET
系统响应:
成功的信息将会记录到 driver 的日志中。
错误的信息将显示在 UI 上。