kudu alter 修改列属性编码 encoding

本文探讨了如何将MySQL中包含中文字段的表转换为Kudu,涉及CONVERT函数和不同编码格式。重点讲述了在Kudu中编码选择和alter table操作,以及潜在的数据字段编码修改风险和各种编码的区别。

1.问题

mysql中对于包含中文字段的排序可以通过函数转换为gbk编码再进行排序 勉强能用
在这里插入图片描述

举例如下:
order by CONVERT(name USING gbk) COLLATE gbk_chinese_ci name desc
数据导入到kudu中后不能使用mysql的函数了这时候去研究了下字段编码的东西顺便记录一下

2.记录

首先kudu里面好像没有对应编码格式他有另外一套 有待研究各自区别
我把相关网页的链接贴在下面应该有帮助

  1. 官方文档建表部分
    在这里插入图片描述

  2. 字段编码相关部分说明
    在这里插入图片描述

kudu alter相关文档
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

感觉这入口真难找
alter修改表结构相关文档
在这里插入图片描述

最后测试一下 修改成功

在这里插入图片描述
命令如下:
desc classify_record_test;
alter table classify_record_test alter column name set encoding prefix_encoding;

3.问题

1.直接修改已有数据的字段编码是否有风险
2.各个编码的区别 没去仔细研究

4.链接

Kudu之SQL操作(KUDU&Impala基本操作)

以及文中链接

<think>好的,我需要帮助用户理解他们提供的代码的输出结果,特别是当调用`print(get_sinusoid_encoding_table(30, 512))`时会发生什么。首先,我应该回顾之前的对话,确保我正确理解这段代码的功能。 用户之前询问了关于`get_sinusoid_encoding_table`函数的详细解释,我解释了该函数如何生成位置编码矩阵,使用了正弦和余弦函数来处理不同位置和维度的角度。现在用户想打印这个函数的输出,参数是30和512,即生成30个位置,每个位置有512维的编码。 首先,我需要确认这个函数返回的是一个PyTorch张量,形状应该是30行(对应30个位置)和512(对应每个位置的编码维度)。当用户使用`print`函数时,PyTorch张量的默认打印行为会显示张量的形状、数据类型、设备以及部分数据。由于512维的数据量很大,打印时只会显示前几个和后几个维度,中间部分会被省略。 接下来,我应该考虑用户可能的疑问或需求。用户可能想知道输出的具体结构,比如每个位置编码的值范围、数据类型的确认(是否为浮点数),以及不同位置和维度之间的差异。此外,用户可能希望看到示例输出,但由于高维度数据无法完整显示,需要解释实际输出会如何截断。 还需要提醒用户,直接打印整个张量可能不太直观,建议使用索引查看特定位置或维度的数值,或者可视化部分维度来理解位置编码的变化趋势。同时,应该强调位置编码的作用,比如在Transformer模型中的位置信息注入,以及不同频率的正弦和余弦函数如何帮助模型捕捉位置关系。 在回答时,需要保持结构清晰,分步骤说明输出的结构,可能的结果,以及相关的注意事项。同时,要使用用户易懂的语言,避免过于技术化的术语,但又要准确传达信息。最后,可能需要提供一些示例代码,如如何查看特定位置的编码或可视化部分数据,帮助用户进一步探索。</think>以下是关于`print(get_sinusoid_encoding_table(30, 512))`输出的详细解释: --- ### 输出结构说明 $$ \text{输出张量形状} = \mathbb{R}^{30 \times 512} \quad (\text{30个位置,每个位置512维编码}) $$ #### 典型输出示例(简化版): ``` tensor([[ 0.0000, 1.0000, 0.0000, ..., 0.0100, 0.9999, 0.0000], [ 0.8415, 0.5403, 0.0464, ..., 0.0923, 0.9957, 0.0100], [ 0.9093, -0.4161, 0.0927, ..., 0.1745, 0.9848, 0.0200], ..., [ 0.8218, 0.5697, 0.7356, ..., 0.9999, 0.0100, 0.9999], [ 0.9129, -0.4081, 0.7529, ..., 0.9998, 0.0200, 0.9998], [ 0.7451, -0.6670, 0.7688, ..., 0.9997, 0.0300, 0.9997]]) ``` --- ### 关键特征解读 1. **维度规律性**: - 每行的**偶数索引**(第0,2,4...)使用$\sin$函数 - 每行的**奇数索引**(第1,3,5...)使用$\cos$函数 - 例如第0和第1对应频率$1/10000^{0/512}=1$ 2. **数值范围**: - $\sin$值范围:$[-1, 1]$ - $\cos$值范围:$[-1, 1]$ - 低频维度(如第510-511)数值变化更平缓 3. **位置差异**: - 相邻位置在**高频维度**差异较大(如第0-10) - 相邻位置在**低频维度**差异较小(如第500-510) --- ### 观察建议(针对Jupyter Notebook) ```python # 查看特定位置编码 pos_5 = sinusoid_enc[5] # 第6个位置(索引从0开始) # 查看前10个维度的值 print(pos_5[:10].numpy().round(4)) # 输出示例: # [ 0.9589 0.2837 0.2995 0.9541 0.5506 0.8348 0.7055 0.7087 0.7833 0.6216] ``` ```python # 可视化低频维度变化 import matplotlib.pyplot as plt plt.plot(sinusoid_enc[:, 510].numpy()) # 第511维(低频维度) plt.title("低频维度位置编码变化") plt.show() ``` --- ### 注意事项 1. **数据截断**: - 控制台只会显示首尾各3,中间用`...`省略 - 实际每个位置包含完整的512个维度值 2. **数值精度**: - 显示值经过四舍五入(如`0.9999`实际可能是`0.999949`) - 使用`.numpy().round(4)`可查看精确值 3. **应用场景**: - 该编码矩阵会与词嵌入相加 - 高频维度携带细粒度位置信息 - 低频维度携带全局位置信息 这个位置编码矩阵是Transformer模型能理解单词位置关系的关键,其特殊设计的正弦/余弦组合可以让模型学习到相对位置的注意力模式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值