Skip to content

Commit 5a63f62

Browse files
committed
docs:数仓更新
1 parent 04ae447 commit 5a63f62

File tree

4 files changed

+555
-1
lines changed

4 files changed

+555
-1
lines changed

docs/.vuepress/config.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -468,11 +468,13 @@ module.exports = {
468468
collapsable: false,
469469
sidebarDepth: 0,
470470
children: [
471-
"轻松驾驭Hive数仓.md",
472471
"数仓分层和数仓建模.md",
472+
"数仓开发之DIM层",
473+
"轻松驾驭Hive数仓.md",
473474
"01-macOS下 Hive 2.x 的安装与配置.md",
474475
"Hive执行原理.md",
475476
"Hive修复分区.md",
477+
476478
]
477479
},
478480

@@ -572,6 +574,7 @@ module.exports = {
572574
"00-亿级数据量商品系统的SQL调优实战.md",
573575
"MySQL查询优化.md",
574576
"InnoDB架构设计.md",
577+
"为什么临时表可以重名?.md",
575578
]
576579
}],
577580
"/md/docker/": [{

docs/md/AI/Claude3到底多强.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# Claude3到底多强
2+
3+
![](https://codeselect.oss-cn-shanghai.aliyuncs.com/image-20240312140945613.png)
4+
5+
2024年3月4日,官方宣布推出 Claude 3 模型系列,它在广泛的认知任务中树立了新的行业基准。该系列包括三个按能力递增排序的最先进模型:Claude 3 Haiku、Claude 3 Sonnet 和 Claude 3 Opus。每个后续模型都提供越来越强大的性能,允许用户为其特定应用选择智能、速度和[成本](https://www.anthropic.com/api#pricing)之间的最佳平衡。
6+
7+
Opus 和 Sonnet 现在已经可以在 claude.ai 和目前在 [159个国家](https://www.anthropic.com/supported-countries)普遍可用的 Claude API 中使用。Haiku 很快也会上市。
8+
9+
#### Claude 3 模型系列
10+
11+
![](https://www.anthropic.com/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2F4zrzovbb%2Fwebsite%2F5d20371eeb8d045465bb22cacfd269b5958b004d-2200x1174.png&w=3840&q=75)
12+
13+
#### 智能新标准
14+
15+
Opus, Claude最智能的模型,在大部分常用的 AI 系统评估基准上表现优于同行,包括本科水平专家知识(MMLU)、研究生水平专家推理(GPQA)、基础数学(GSM8K)等。它在复杂任务上展示了接近人类的理解和流利程度,引领了通用智能的前沿。
16+
17+
所有 [Claude 3](https://www.anthropic.com/claude-3-model-card) 模型在分析和预测、细腻的内容创作、代码生成以及使用西班牙语、日语和法语等非英语语言对话方面的能力都有所提升。
18+
19+
下面是 Claude 3 模型与 Claude同行在多个能力基准测试比较:
20+
21+
![img](https://www.anthropic.com/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2F4zrzovbb%2Fwebsite%2F9ad98d612086fe52b3042f9183414669b4d2a3da-2200x1954.png&w=3840&q=75)
22+
23+
#### 近乎即时的结果
24+
25+
Claude 3 模型可以为实时客户聊天、自动补全和数据提取任务提供动力,这些响应必须是即时和实时的。
26+
27+
Haiku 是市场上智能范畴性价比最高的模型。它可以在不到三秒的时间内读懂一个信息和数据密集的 arXiv 上的研究论文(约10k 个 Token),包括图表和图形。上市后, Claude预计性能会进一步提高。
28+
29+
对于大多数工作负载,Sonnet 的速度是 Claude 2 和 Claude 2.1 的两倍,智能水平也更高。它擅长迅速响应的任务,如知识检索或销售自动化。Opus 以与 Claude 2 和 2.1 相似的速度交付,但智能水平更高。
30+
31+
#### 强大的视觉能力
32+
33+
Claude 3 模型拥有与其他领先模型相当的复杂视觉能力。它们可以处理包括照片、图表、图形和技术图纸在内的广泛视觉格式。 Claude特别高兴为 Claude的企业客户提供这种新的方式,其中一些客户的知识库有多达50%以多种格式编码,如PDF、流程图或演示幻灯片。
34+
35+
![img](https://www.anthropic.com/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2F4zrzovbb%2Fwebsite%2F6b66d86ff0c180e95bc6ad2e6e4a1843aa74c80f-2200x960.png&w=3840&q=75)
36+
37+
#### 更少的拒绝
38+
39+
先前的 Claude 模型经常做出不必要的拒绝,这表明缺乏上下文理解。 Claude在这一领域取得了有意义的进展:与上一代模型相比,Opus、Sonnet 和 Haiku 大大减少了拒绝回应那些触及系统保护边界的提示。如下所示,Claude 3 模型对请求有更微妙的理解,识别真正的危害,并且更少地拒绝回答无害的提示。
40+
41+
![img](https://www.anthropic.com/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2F4zrzovbb%2Fwebsite%2Fd1fbcf3d58ebc2dcd2e98aac995d70bf50cb2e9c-2188x918.png&w=3840&q=75)
42+
43+
#### 提高准确率
44+
45+
各种规模的企业都依赖 Claude的模型为他们的客户服务,因此对于模型输出来说,保持高准确率是至关重要的。为了评估这一点, Claude使用了一套复杂的、真实的问题,这些问题针对目前模型的已知弱点。 Claude将回应分为正确答案、错误答案(或幻觉)以及不确定性声明,即模型表示它不知道答案,而不是提供错误信息。与 Claude 2.1 相比,Opus 在这些具挑战性的开放式问题上的准确度(或正确答案)表现出了两倍的提升,同时还展现出降低了错误答案的水平。
46+
47+
除了产生更值得信赖的回应外, Claude很快还将在 Claude 3 模型中启用引用功能,从而使它们能够指向参考材料中的精确句子以验证它们的答案。
48+
49+
![img](https://www.anthropic.com/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2F4zrzovbb%2Fwebsite%2F7cb598c6a9fa58c12b77f67ee2067feaac4a2de0-2200x896.png&w=3840&q=75)
50+
51+
#### 长上下文和近乎完美的回忆
52+
53+
Claude 3 模型系列在发布之初将提供 200K 上下文窗口。然而,所有三个模型都能够接受超过 100 万个 Token 的输入, Claude可能会向需要增强处理能力的选定客户提供这一点。
54+
55+
为了有效处理长上下文提示,模型需要强大的回忆能力。'大海捞针' (NIAH) 评估衡量模型从大量数据中准确回忆信息的能力。 Claude通过使用每个提示中的 30 个随机针/问题对之一,并在多样化的众包文档语料上进行测试,增强了这一基准测试的稳健性。Claude 3 Opus 不仅实现了近乎完美的回忆,准确率超过了 99%,在某些情况下,它甚至识别出评估自身的局限性,识别出“针”句似乎是人为插入到原文中的。
56+
57+
![img](https://www.anthropic.com/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2F4zrzovbb%2Fwebsite%2Fd2aa12b60e9c57e7057924bd8878d754c7b3d8e7-2200x1088.png&w=3840&q=75)
58+
59+
#### 负责任的设计
60+
61+
Claude开发 Claude 3 模型系列,旨在让它们像它们的能力一样值得信赖。 Claude有几个专门的团队跟踪和减轻广泛的风险,范围从错误信息和CSAM到生物滥用、选举干预和自主复制技能。 Claude继续开发诸如 [Constitutional AI](https://www.anthropic.com/news/constitutional-ai-harmlessness-from-ai-feedback) 这样的方法来提高 Claude模型的安全性和透明度,并已调整 Claude的模型以减轻可能由新模式引发的隐私问题。
62+
63+
在日益复杂的模型中解决偏见问题是一项持续的努力,而 Claude在这次新发布中取得了进步。如模型卡所示,Claude 3 根据 [Bias Benchmark for Question Answering (BBQ)](https://aclanthology.org/2022.findings-acl.165/) 的评估显示出比 Claude以前的模型更少的偏见。 Claude仍然致力于推进减少偏见并促进 Claude模型中更大中立性的技术,确保它们不会倾向于任何特定的党派立场。
64+
65+
尽管 Claude 3 模型系列在生物学知识、网络相关知识和自主性方面相比以前的模型取得了进步,但它仍然符合 Claude [Responsible Scaling Policy](https://www.anthropic.com/news/anthropics-responsible-scaling-policy) 中的 AI 安全等级 2 (ASL-2)。
Lines changed: 183 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
1+
# 数仓开发之DIM层
2+
3+
## 1 设计要点
4+
5+
该层主要记录事物发生的一些环境信息。
6+
7+
### 1.1 设计依据
8+
9+
维度建模理论,该层存储维度模型的维度表
10+
11+
### 1.2 数据存储格式
12+
13+
orc 列式存储+snappy 压缩。
14+
15+
#### ORC(Optimized Row Columnar)
16+
17+
高效的列式存储格式,优化大数据场景中数据的读取速度及存储效率。列式存储格式特别适用于数据仓库查询操作,因为它允许只读取查询中涉及的列,减少I/O操作。ORC文件还包括轻量级的索引,这可以加速查询,还实现了高级数据类型的支持。
18+
19+
因为我们一般都是按需要的列去查询嘛,先指定好了列,再都查出来,效率大大提升,而不是先定位哪些行,再提取对应列。这样更利于分析计算。
20+
21+
而行式存储更适合于业务代码的crud。
22+
23+
#### Snappy压缩
24+
25+
为速度而不是压缩比优化的压缩库,特别适合大数据技术栈,因其提供合理的压缩率而几乎不增加CPU负担。这意味着在读取和写入数据时,压缩和解压缩的速度都很快,对性能影响较小。
26+
27+
将ORC列式存储和Snappy压缩结合使用,可以有效减少存储空间的使用,同时提高查询性能。在数据仓库中存储DIM数据时,通常需要从两个方面考虑:查询速度和存储成本。列式存储如ORC格式可以提升查询性能,而Snappy压缩可以减少所需的存储空间。
28+
29+
### 1.3 表名命名规范
30+
31+
`dim_表名_全量表`或拉链表标识(full/zip)
32+
33+
## 2 车辆信息维度表
34+
35+
### 2.1 建表
36+
37+
```sql
38+
drop table if exists dim_car_info_full;
39+
create external table dim_car_info_full
40+
(
41+
`id` string comment '车辆唯一编码',
42+
`type_id` string comment '车型ID',
43+
`type` string comment '车型',
44+
`sale_type` string comment '销售车型',
45+
`trademark` string comment '品牌',
46+
`company` string comment '厂商',
47+
`seating_capacity` int comment '准载人数',
48+
`power_type` string comment '车辆动力类型',
49+
`charge_type` string comment '车辆支持充电类型',
50+
`category` string comment '车辆分类',
51+
`weight_kg` int comment '总质量(kg)',
52+
`warranty` string comment '整车质保期(年/万公里)'
53+
) comment '车辆信息维度表'
54+
partitioned by (`dt` string comment '统计日期')
55+
stored as orc
56+
location '/warehouse/car_data/dim/dim_car_info_full'
57+
tblproperties ('orc.compress' = 'snappy');
58+
```
59+
60+
### 2.2 数据装载
61+
62+
离线数据,同步最新的一天的全量数据即可。
63+
64+
```sql
65+
insert overwrite table car_data.dim_car_info_full partition (dt = '2023-05-02')
66+
select id,
67+
type_id,
68+
type,
69+
sale_type,
70+
trademark,
71+
company,
72+
seating_capacity,
73+
power_type,
74+
charge_type,
75+
category,
76+
weight_kg,
77+
warranty
78+
from car_data.ods_car_info_full o
79+
where o.dt = '2024-03-11';
80+
```
81+
82+
## 3 日志编码维度表
83+
84+
显然,无需分区。
85+
86+
### 3.1 建表
87+
88+
```sql
89+
drop table if exists dim_code_full;
90+
create external table dim_code_full
91+
(
92+
`type` string comment '编码类型',
93+
`code_id` string comment '编码ID',
94+
`code_name` string comment '编码名称'
95+
) comment '日志编码维度表'
96+
stored as orc
97+
location '/warehouse/car_data/dim/dim_code_full'
98+
tblproperties ('orc.compress' = 'snappy');
99+
```
100+
101+
### 3.2 **数据装载**
102+
103+
因为dim层的表格具有压缩和存储格式,所有不能直接上传文件到hive的表格路径,需要先上传文件car_data_code.txt到临时表。
104+
105+
```sql
106+
drop table if exists tmp_code_full;
107+
# 创建临时表
108+
create external table tmp_code_full
109+
(
110+
`type` string comment '编码类型',
111+
`code_id` string comment '编码ID',
112+
`code_name` string comment '编码名称'
113+
) comment '日志编码维度表'
114+
row format delimited
115+
fields terminated by '\t'
116+
location '/warehouse/car_data/tmp/tmp_code_full';
117+
```
118+
119+
把car_data_code.txt文件放入到临时表的路径。
120+
121+
```sql
122+
insert into table dim_code_full select * from tmp_code_full;
123+
```
124+
125+
## 4 数据装载脚本
126+
127+
```shell
128+
#!/bin/bash
129+
130+
# 设置应用名为 car_data
131+
APP='car_data'
132+
133+
# 检查是否传入了日期参数,如果传入了第二个参数($2),则使用该参数,否则使用昨天的日期
134+
if [ -n "$2" ]; then
135+
do_date=$2
136+
else
137+
# 使用 date 命令获取昨天的日期,格式为 YYYY-MM-DD
138+
do_date=$(date -d '-1 day' +%F)
139+
fi
140+
141+
# Hive SQL 脚本,作用是将数据从ODS层导入到DIM层,并按日期分区
142+
dim_car_info_full="
143+
INSERT OVERWRITE TABLE ${APP}.dim_car_info_full PARTITION (dt =
144+
'$do_date')
145+
SELECT id,
146+
type_id,
147+
type,
148+
sale_type,
149+
trademark,
150+
company,
151+
seating_capacity,
152+
power_type,
153+
charge_type,
154+
category,
155+
weight_kg,
156+
warranty
157+
FROM ${APP}.ods_car_info_full o
158+
WHERE o.dt = '$do_date';
159+
"
160+
161+
# 处理传入的第一个参数($1),根据参数执行相应Hive脚本
162+
case $1 in
163+
# 参数 'dim_car_info_full',执行 DIM 层的数据导入操作
164+
'dim_car_info_full')
165+
hive -e "${dim_car_info_full}"
166+
;;
167+
# 参数 'all',同样执行 DIM 层的数据导入操作 这里是 ETL 的习惯,只是当前仅一张表所以和上一case 等效了
168+
"all")
169+
hive -e "${dim_car_info_full}"
170+
;;
171+
esac
172+
```
173+
174+
在这个脚本中,我们定义了一个名为 `APP` 的变量来表示数据库名称。脚本会检查是否给定了一个日期参数 `$2`,如果没有给定,它将默认使用昨天的日期。随后,我们定义了一个名为 `dim_car_info_full` 的 Hive SQL 语句,用于从 ODS 层向 DIM 层覆盖插入数据,并将数据分区为指定日期。最后,通过 `case` 语句,脚本根据传入参数决定执行关联的 Hive 命令。
175+
176+
```bash
177+
# 给脚本添加执行权限
178+
chmod +x your_script_name.sh
179+
180+
# 自测脚本功能:传参使用
181+
./your_script_name.sh dim_car_info_full 2024-03-12
182+
./your_script_name.sh all
183+
```

0 commit comments

Comments
 (0)