doris 数据导入、数据权限、资源管理

服务器环境

172.16.10.65 node1 (fe)

172.16.10.66 node2(be)

172.16.10.75 node3(be)

172.16.10.76 node4(be)

安装目录

doris

home/apps/doris-2.1.1

启动命令

# FE(65服务器)
/home/apps/doris-2.1.1/fe/bin/start_fe.sh --daemon
# BE (66服务器)
sh /home/apps/start/doris.sh start

停止命令

# FE(65服务器)
/home/apps/doris-2.1.1/fe/bin/stop_fe.sh
# BE(66服务器)
sh /home/apps/start/doris.sh stop

doris jdbc

172.16.10.65 9030 root/

HTTPS 安全传输 **

HTTP 安全传输 - Apache Doris

stream load 内部流程

高危sql限制

高危 SQL 限制 - Apache Doris

正则限制

Kill Query

Kill Query - Apache Doris

扫描超时连接

监控和报警

监控和报警 - Apache Doris

Doris 使用 PrometheusGrafana 进行监控项的采集和展示。

服务自动拉起

服务自动拉起 - Apache Doris

本文档主要介绍如何配置 Doris 集群的自动拉起,保证生产环境中出现特殊情况导致服务宕机后未及时拉起服务从而影响到业务的正常运行。

数据库读写权限 ***

认证和鉴权 - Apache Doris

每个用户一个独立数据库,自己的库可以读写,主库只能读

服务器资源权限 ***

SET-PROPERTY - Apache Doris

用户cpu、内存、超时限制

审计日志插件 **

审计日志插件 - Apache Doris

用户sql记录

导入方式

​
curl --location-trusted \
-u root: \
-H "label:test1" \
-H "column_separator:," \
-H "columns: c1,c2,c3,c4,c5,c6,part_id = c1,month_id =c2,day_id =c3,prov_id = md5(c4),area_id =c5,create_time = c6,xxxx = md5(c3)"-H"label:11"\
-T test.csv \
http://localhost:8030/api/test/TESTXX/_stream_load
# BUG
curl  --location-trusted \
-u root: \
-T /home/apps/testdata1/test.csv  \
-H "label:test1" \
-H "sql:insert into test.TESTXX(part_id,month_id,day_id ,prov_id,area_id,create_time,xxxx) select c1,TO_BASE64(SM4_ENCRYPT(c2,'xxxxx')),c3,c4,c5,c6,md5(c2) from http_stream('format' = 'CSV', 'column_separator' = ',' ) " \
http://localhost:8030/api/_http_stream
​
{
    "TxnId": 87810,
    "Label": "11",
    "Comment": "",
    "TwoPhaseCommit": "false",
    "Status": "Success",
    "Message": "OK",
    "NumberTotalRows": 9,
    "NumberLoadedRows": 9,
    "NumberFilteredRows": 0,
    "NumberUnselectedRows": 0,
    "LoadBytes": 504,
    "LoadTimeMs": 363,
    "BeginTxnTimeMs": 0,
    "StreamLoadPutTimeMs": 5,
    "ReadDataTimeMs": 0,
    "WriteDataTimeMs": 338,
    "CommitAndPublishTimeMs": 17
}
{
    "TxnId": 87812,
    "Label": "112",
    "Comment": "",
    "TwoPhaseCommit": "false",
    "Status": "Fail",
    "Message": "[DATA_QUALITY_ERROR]too many filtered rows",
    "NumberTotalRows": 9,
    "NumberLoadedRows": -9,
    "NumberFilteredRows": 18,
    "NumberUnselectedRows": 0,
    "LoadBytes": 504,
    "LoadTimeMs": 128,
    "BeginTxnTimeMs": 0,
    "StreamLoadPutTimeMs": 16,
    "ReadDataTimeMs": 0,
    "WriteDataTimeMs": 110,
    "CommitAndPublishTimeMs": 0,
    "ErrorURL": "http://172.16.10.66:8040/api/_load_error_log?file=__shard_54/error_log_insert_stmt_564669773e05b944-2d7a303f7cb98396_564669773e05b944_2d7a303f7cb98396"
}
//  label: 一次导入的标签,相同标签的数据无法多次导入。用户可以通过指定Label的方式来避免一份数据重复导入的问题。
//  当前Doris内部保留30分钟内最近成功的label。
​
//  max_filter_ratio:最大容忍可过滤(数据不规范等原因)的数据比例。默认零容忍。数据不规范不包括通过 where 条件过滤掉的行。
​
//  exec_mem_limit: 导入内存限制。默认为 2GB。单位为字节。如果并发导入过多,可能会导致内存不足。
​
//  skip_lines: 整数类型, 默认值为0, 含义为跳过csv文件的前几行. 当设置format设置为 csv_with_names 或、csv_with_names_and_types 时, 该参数会失效.
​
//  sql: 数据tvf转换方法 2.1版本新特性,tvf产生的字段名 c1-c2------cn
//  column_separator:用于指定导入文件中的列分隔符,默认为\t。如果是不可见字符,则需要加\x作为前缀,使用十六进制来表示分隔符。
//  如hive文件的分隔符\x01,需要指定为-H "column_separator:\x01"。
​
//  strict_mode 严格模式,由于数据库设置了字段类型,在由文本中的字符串数据转换到数据库字段类型失败时,严格模式会认为该条数据是错误数据。

3

<think>好的,我现在要处理用户关于Apache Doris数据仓库开发规范的问题。首先,用户明确想了解最佳实践和规范文档,我需要根据提供的引用内容来组织回答。 首先,我需要回顾用户提供的四个引用内容。引用1提到Doris的实时分析能力和性能,引用2提到同程数科的经验总结,引用3讨论Doris的特性和安装,引用4则涉及云积天赫用Doris替代Hive的实践。这些引用内容中,引用2和4可能包含具体的开发规范和经验。 接下来,我应该整理出开发规范的主要方面。根据引用2,开发人员关注点包括表结构设计、查询优化、数据导入资源管理。引用4提到功能丰富和核心优势,可能涉及架构设计。需要将这些点结构化,分点说明。 然后,每个部分需要具体展开。例如,表结构设计部分可能需要分桶和分区策略,数据类型选择,索引优化。查询优化可能涉及避免全表扫描、合理使用物化视图、Join优化。数据导入方面,需要考虑批量和实时导入方式,事务管理。资源管理可能包括资源组设置和监控告警。架构设计方面,分层设计和元数据管理可能重要。 另外,用户可能需要知道如何获取官方文档,引用1和3提到官方文档,应该推荐用户参考,并附上链接。同时,需要生成相关问题,可能涉及性能调优、迁移实践、监控工具和实时分析场景等。 需要确保回答符合系统级指令:使用正确的中文,数学公式用$...$,独立公式用$$...$$,但当前内容可能不涉及数学公式,所以可能不需要。同时,添加引用标识,比如[^2][^4]在相关段落末尾。 最后,检查回答结构是否清晰,是否符合用户要求的最佳实践和规范,并确保引用的正确性。生成的相关问题需要围绕Doris开发的不同方面,帮助用户深入理解。</think>### Apache Doris 数据仓库开发规范与最佳实践 Apache Doris 作为高性能实时分析型数据仓库,其开发规范需围绕**表设计、查询优化、数据管理、资源控制**等核心环节展开。以下是关键实践要点: --- #### 1. **表结构设计规范** - **分桶与分区策略** 根据数据规模和查询模式选择合理的分桶键(Bucketing Key)和分区键(Partition Key)。例如,时间字段常用作分区键以加速时间范围查询,分桶键应选择高基数列以均匀分布数据。 $$ \text{分桶数} = \frac{\text{数据量预估}}{\text{单副本数据块大小(默认 1GB)}} $$ - **数据类型优化** 优先使用精确类型(如 `INT`、`DECIMAL`)替代字符串类型,并避免过长的 `VARCHAR` 定义以减少存储和计算开销。 - **索引设计** 合理使用前缀索引(Prefix Index)和 Bloom Filter 索引,针对高频过滤字段(如用户ID)加速查询[^3]。 --- #### 2. **查询优化实践** - **避免全表扫描** 通过分区剪枝(Partition Pruning)和分桶裁剪(Bucket Pruning)减少 I/O 消耗,确保查询条件命中分区和分桶键[^2]。 - **物化视图** 对复杂聚合查询预建物化视图,例如: ```sql CREATE MATERIALIZED VIEW sales_summary AS SELECT product_id, SUM(quantity), AVG(price) FROM sales GROUP BY product_id; ``` - **Join 优化** 小表使用 `Broadcast Join`,大表使用 `Shuffle Join`,并通过 `EXPLAIN` 分析执行计划。 --- #### 3. **数据导入与管理** - **批量导入** 使用 `Broker Load` 或 `Spark Connector` 实现高效批量数据导入,控制单批次数据量在 1-10GB 范围[^3]。 - **实时写入** 通过 `Stream Load` 或 `Flink Connector` 支持低延迟写入,需注意小文件合并策略。 - **数据生命周期** 设置分区 TTL(Time-to-Live)自动清理过期数据,例如: ```sql ALTER TABLE logs SET ("dynamic_partition.ttl" = "7"); ``` --- #### 4. **资源与权限管理** - **资源组隔离** 为不同业务线分配独立资源组(Resource Group),避免查询间资源竞争: ```sql CREATE RESOURCE GROUP analytics_group PROPERTIES ("cpu_share"="50", "memory_limit"="30%"); ``` - **监控与告警** 通过 Doris 的 `FE Metrics` 和 `BE Metrics` 监控集群状态,重点关注查询延迟、内存使用率和副本健康度。 --- #### 5. **数仓架构设计建议** - **分层设计** 采用 ODS(原始数据层)、DWD(明细层)、DWS(汇总层)分层模型,利用 Doris 的物化视图和 Rollup 技术加速上层查询。 - **元数据管理** 统一管理表注释、字段注释,并通过 `INFORMATION_SCHEMA` 定期审计元数据一致性。 --- ### 官方文档与学习资源 - **Apache Doris 官方文档**:[https://doris.apache.org](https://doris.apache.org) [^1] - **最佳实践案例**:同程数科与云积天赫的 Doris 落地经验 [^2] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值