返回首页

gbase数据、南大通用产品文档:GBase8akmeanspp

更新日期:2024年09月11日

kmeanspp 通过k-means++ 算法来选取种子点并开始迭代。k-means++ 算法通过
让初始种子点尽量离散来改进分类结果。
语法
函数的语法如下:

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1444
kmeanspp( source_table,
expr_point,
k,
fn_dist,
max_num_iterations,
min_frac_reassinged,
seeding_sample_rate
)
参数说明

source_table:含训练数据的输入表,形如“库名.表名”,库名不可省略,
以便在对应的库中建立结果表。

expr_point:表达式,用于从表中计算得到坐标点,数组类型。

k:最终的类簇数量。

fn_dist:用于计算点距的函数名,参见
,推荐使用squared_dist_norm2。

max_num_iterations:最大的迭代次数。

min_frac_reassinged:
容忍度,
迭代过程中如发现分组发生变化的点数占总点
数量的比例小于该值则结束迭代。

seeding_sample_rate:采样率,取值范围(0, 1.0]。如果为1.0,则采样时使
用全部数据;小于1.0 则仅使用部分数据。

提示符
通过提示符变量设置gsql 的提示符,这些变量是由字符和特殊的转义字符所组成。
表2-3 提示符变量
变量
描述
示例
PROMPT1
gsql 请求一个新命
令时使用的正常提
使用变量PROMPT1 切换提示符:

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
9
示符。
PROMPT1 的默认值
为:%/%R%#
提示符变为[local]:
gbase=# \set PROMPT1 %M
[local:/home/gbase/gbase_db/tmp]
提示符变为name:
gbase=# \set PROMPT1 name
name
提示符变为=:
gbase=# \set PROMPT1 %R
=
PROMPT2
在一个命令输入期
待更多输入时(例
如,
查询没有用一个
分号结束或者引号
不完整)
显示的提示
符。
使用变量PROMPT2 显示提示符:
gbase=# \set PROMPT2 TEST
gbase=# select * from public.area TEST;
area_id |
area_name
---------+------------------------
1 | Europe
2 | Americas
4 | Middle East and Africa
3 | Asia
(4 rows)
PROMPT3
当执行COPY 命令,
并期望在终端输入
数据时
(例如,
COPY
FROM STDIN)


示提示符。
使用变量PROMPT3 显示COPY 提示符:
gbase=# \set PROMPT3 '>>>>'
gbase=# copy public.area from STDIN;
Enter data to be copied followed by a
newline.
End with a backslash and a period on a line
by itself.
>>>>
提示符变量的值是按实际字符显示的。但是,当设置提示符的命令中出现“%” 时,
变量的值根据“%”后的字符,替换为已定义的内容,已定义的提示符请参见表2-4。
表2-4 已定义的替换
符号
符号说明
%M
主机的全名(包含域名),若连接是通过Unix 域套接字进行的,则全名为
[local],若Unix 域套接字不是编译的缺省位置,就是[local:/dir/name]。

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
10
%m
主机名删去第一个点后面的部分。
若通过Unix 域套接字连接,
则为[local]。
%>
主机正在侦听的端口号。
%n
数据库会话的用户名。
%/
当前数据库名称。
%~
类似%/,如果数据库是缺省数据库时输出的是波浪线~。
%#
如果会话用户是数据库系统管理员,使用#,否则用>。
%R

对于PROMPT1 通常是“=”,如果是单行模式则是“^”,如果会话与数
据库断开(如果\connect 失败可能发生)则是“!”。

对于PROMPT2 该序列被“ -”、
“ *”、
单引号、
双引号或“$”(取决于gsql
是否等待更多的输入:查询没有终止、正在一个/* ... */ 注释里、正
在引号或者美元符扩展里)代替。
%x
事务状态:

如果不在事务块里,则是一个空字符串。

如果在事务块里,则是“*”。

如果在一个失败的事务块里则是“!”。

如果无法判断事务状态时为“?”(比如没有连接)。
%digits
指定字节值的字符将被替换到该位置。
%:name
gsql 变量“name”的值。
%comma nd
command 的输出,类似于使用“^”替换。
%[ . . . %]
提示可以包含终端控制字符,这些字符可以改变颜色、背景、提示文本的
风格、终端窗口的标题。例如,
gbase=# \set PROMPT1 '%[%033[1;33;40m%]%n@%/%R
%[%033[0m%]%#'
这个句式的结果是在VT100 兼容的可显示彩色的终端上的一个宽体(1;)
黑底黄字(33;40)。
环境变量
表2-5 与gsql 相关的环境变量

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
11
名称
描述
COLUMNS
如果\set columns 为0,则由此参数控制wrapped 格式的宽度。
这个宽度用于决定在自动扩展的模式下,是否要把宽输出模式
变成竖线的格式。
PAGER
如果查询结果无法在一页显示,
它们就会被重定向到这个命令。
可以用\pset 命令关闭分页器。典型的是用命令more 或less 来
实现逐页查看。缺省值是平台相关的。
说明

less 的文本显示,受系统环境变量LC_CTYPE 影响。
PSQL_EDITOR
\e 和\ef 命令使用环境变量指定的编辑器。
变量是按照列出的先
后顺序检查的。在Unix 系统上默认的编辑工具是vi。
EDITOR
VISUAL
PSQL_EDITOR_LINE
NUMBER_ARG
当\e 和\ef 带上一行数字参数使用时,
这个变量指定的命令行参
数用于向编辑器传递起始行数。像Emacs 或vi 这样的编辑器,
这只是个加号。如果选项和行号之间需要空白,在变量的值后
加一个空格。例如:
PSQL_EDITOR_LINENUMBER_ARG = '+'
PSQL_EDITOR_LINENUMBER_ARG='--line '
Unix 系统默认的是+。
PSQLRC
用户的.gsqlrc 文件的交互位置。
SHELL
使用\!命令跟shell 执行的命令是一样的效果。
TMPDIR
存储临时文件的目录。缺省是/tmp。

获取一行数据
使用游标的fetchone 方法获取结果集中的一行数据。
fetchone 接口可以循
环调用,直到结果集中的数据获取完毕。
from GBaseConnector import connect, GBaseError
if __name__ == '__main__':

GBase Python 接口开发手册


- 8 -

南大通用数据技术股份有限公司
config = {'host':'172.16.0.131',
'user':'root',
'passwd':'111111',
'port':5258,
'db':'test'}
try:
conn = connect()
conn.connect(**config)
cur = conn.cursor()
cur.execute("DROP TABLE IF EXISTS test")
cur.execute("CREATE TABLE IF NOT EXISTS test(id INT, name VARCHAR(50))")
cur.execute("INSERT INTO test VALUES(1,'hello'), (2,'world')")
cur.execute("SELECT * FROM test")
row = cur.fetchone()
while row is not None:
print row
row = cur.fetchone()
cur.execute("DROP TABLE IF EXISTS test")
except GBaseError.DatabaseError, err:
print err
finally:
conn.close()