1)是否可以创建由现有HBase表支持的Phoenix表?
根据此处的信息
http://phoenix.apache.org/language/#create_table
应该有可能,但是我不确定到底需要传递哪些选项。我在那里看不到任何例子。
“ HBase表和列配置选项可以作为键/值对传递,以根据需要配置HBase表。请注意,当使用IF NOT EXISTS子句时,如果表已经存在,则不会进行任何更改做到这一点。”
2)另外,在创建表的过程中,我是否可以控制自己将菲尼克斯列名映射到HBase列名?
3)我知道,如果写入过程直接写入基础HBase表而不是Phoenix视图,则Phoenix视图(由HBase表支持)在维护其索引方面存在某些问题/限制。
https://issues.apache.org/jira/browse/PHOENIX-1499 https://issues.apache.org/jira/browse/PHOENIX-1619
那么...如果我们创建一个由HBase表支持的Phoenix表(并写入Phoenix背后的HBase表),那也将是一个问题吗?我的意思是,如果对1)的回答是肯定的,那么Phoenix表和Phoenix视图是否会遇到相同的问题(前提是我的写入内容不通过Phoenix)?
答案 0 :(得分:1)
直接点击此处的答案。
a)一般而言,可以将特定属性传递给列族或表。这些是使用选项定义的各种选项。可以在这里引用选项:http://phoenix.apache.org/language/#options。您可以创建引用现有hbase表的视图。我更喜欢视图,因为,我可以删除并重新创建它们而不会出现与表不同的问题,表的删除也会导致基础HBase表消失。
b)这不是AFAIK。现有的hbase表和相应的phoenix视图之间没有映射选项(即phoenix中的fN引用了HBase中的firstName)
c)正确。在Phoenix的4.x版本中,这是正确的。
i)如果您创建Phoenix表(将自动创建HBase表)并直接写入HBase,则必须注意使用Phoenix类型进行写入,以便可以从HBase中正确读取它们({{ 3}})。另请注意,如果您已从phoenix定义了这样的表格,则必须注意SALT_BUCKETS和phoenix盐