【问题标题】:What does 'pool_name' mean in CREATE TABLE-statement?CREATE TABLE 语句中的“pool_name”是什么意思?
【发布时间】:2019-06-14 09:31:55
【问题描述】:
在 CREATE TABLE-statement 末尾的 Impala 中,您可以按照我的理解设置复制因子:
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name
...
[CACHED IN 'pool_name' [WITH REPLICATION = integer] | UNCACHED]
总之,我有点疑惑pool_name 指的是什么。这是 HDFS 中存储数据的路径吗?
【问题讨论】:
标签:
sql
hadoop
hdfs
impala
【解决方案1】:
不完全是,它实际上是指使用hdfs cacheadmin -addPool... 命令定义的HDFS 池,请参阅hdfs command guide。反过来,池确实包含一堆 cache 指令,这些指令引用要缓存的 hdfs 路径。来自 apache 文档:
缓存池是一个管理实体,用于管理
缓存指令。缓存池具有类似 UNIX 的权限,
限制哪些用户和组可以访问该池。写
权限允许用户添加和删除缓存指令到
水池。读取权限允许用户列出缓存指令
池,以及其他元数据。未使用执行权限。
缓存池也用于资源管理。池可以强制执行
最大限制,限制可以缓存的字节数
通过池中的指令汇总。通常,池的总和
限制将大约等于聚合内存的数量
保留用于集群上的 HDFS 缓存。缓存池还跟踪
帮助集群用户确定什么是和
应该被缓存。
池还可以强制执行最大生存时间。这限制了
添加到池中的指令的最大过期时间。
有关如何在 Impala 中使用此 HDFS 功能的详细信息,请参阅Impala Guide。