java - 是否可以创建由现有 HBase 表支持的 Phoenix 表?

标签 java sql hadoop hbase apache-phoenix

1) 是否可以创建由现有 HBase 表支持的 Phoenix 表?
基于这里的信息
http://phoenix.apache.org/language/#create_table 应该是可能的,但我不确定到底需要传递哪些选项。我在那里没有看到任何例子。

“HBase 表和列配置选项可以作为键/值对传递,以根据需要配置 HBase 表。请注意,使用 IF NOT EXISTS 子句时,如果表已存在,则不会进行任何更改一定要做到这一点。”

2)另外,是否有可能在建表的过程中,我自己控制phoenix列名到HBase列名的映射?

3) 我知道,如果写入过程直接写入底层 HBase 表而不是 Phoenix View ,Phoenix View (由 HBase 表支持)在维护其索引方面存在某些问题/限制。

https://issues.apache.org/jira/browse/PHOENIX-1499 https://issues.apache.org/jira/browse/PHOENIX-1619

那么...如果我们创建一个由 HBase 表支持的 Phoenix 表(并在 Phoenix 背后写入 HBase 表),这也会成为问题吗?我的意思是,如果 1) 的答案是肯定的,那么我使用 Phoenix 表时是否会遇到与 Phoenix View 相同的问题(前提是我的写入不通过 Phoenix)?

最佳答案

直接点击这里的答案。

a) 一般而言,特定属性可以传递给列族或表。这些是使用选项定义的各种选项。选项可以引用这里:http://phoenix.apache.org/language/#options。您可以创建引用现有 hbase 表的 View 。我更喜欢 View ,因为我可以删除并重新创建它们,而不会出现任何问题,这与表不同,表的删除也会导致底层 HBase 表消失

b)据我所知这是不可能的。现有的 hbase 表和相应的 phoenix View 之间没有映射选项(即 phoenix 中的 fN 引用 HBase 中的firstName)

c) 这是正确的。至少在 Phoenix 4.x 版本中,这是事实。

i) 如果您创建 Phoenix 表(HBase 表将自动创建)并直接写入 HBase,您将必须注意使用 Phoenix 类型进行写入,以便从 HBase 正确读取它们(https://github.com/apache/phoenix/blob/master/phoenix-core/src/main/java/org/apache/phoenix/schema/types) 。另请注意,如果您有 SALT_BUCKETS 和 phoenix salt,如果您已经从 phoenix 定义了这样的表,则必须小心

关于java - 是否可以创建由现有 HBase 表支持的 Phoenix 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58339818/

相关文章:

java - 在我的 xhtml 中使用模板 (jsf) 后,commandLink 和 CommandButton 标记不会调用任何操作

java - BufferStrategy.getDrawGraphics() 在切换到全屏独占模式后有时会失败

java - 如何判断表中是否存在一行?

hadoop - 减少阶段后合并输出文件

hadoop - Hive 不强制分桶

java - 异常处理与手动检查条件

java - 总行数结果集 getRow 方法

mysql - 跨多个表优化 INNER JOIN

sql - 捕获前 5 行并组合其余的 SQL Server

sql - 如何在不同的子句中执行 CASE 语句?