【问题标题】:How to refer HBase namespace in hive create table "TBLPROPERTIES"如何在配置单元创建表“TBLPROPERTIES”中引用 HBase 命名空间
【发布时间】:2016-06-17 16:57:32
【问题描述】:

我正在尝试使用 HBase 表 ('test_table) 作为源创建 Hive 外部表。 HBase 表是在 HBase 命名空间“test_namespace”下创建的。 在应用程序的其他部分,我使用以下 syntx 访问表

test_namespace:test_table 或 hbase://test_namespace:test_table

按照我创建配置单元脚本的相同方法

CREATE EXTERNAL TABLE IF NOT EXISTS TEST_INDIVIDUAL(
    key    string,
    test   string,
    photo  string,
    location string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES("hbase.columns.mapping"="key,default:test,default:photo,default:location")
TBLPROPERTIES("hbase.table.name" = "test_namespace:test_table");

但是当我执行 hive 脚本时,我得到了找不到错误表。 如果我尝试

hbase://test_namespace:test_table

它会抛出无效的表名错误。

我试图用谷歌搜索如何在 hive 脚本中引用 HBase 命名空间。但没有运气。

提前感谢您的帮助!

【问题讨论】:

  • 您是否尝试将test_table 用作hbase.table.name
  • 是的,这是我尝试的初始配置。

标签: hadoop namespaces hive hbase


【解决方案1】:

我试过同样的问题,效果很好,

以下是步骤顺序,

A.在 HBase Shell 中执行操作

  1. 创建命名空间(即 HBase 中的数据库/架构)

    create_namespace 'krishna'

  2. 检查命名空间的存在

    列表命名空间

  3. 在命名空间内创建表

    创建“krishna:hivehbase”、“评级”

  4. 验证命名空间内的表创建

    list_namespace_tables '克里希纳'

  5. 添加行和列族(填充表格)

    输入 'krishna:hivehbase', 'row1', 'ratings:userid', 'user1' 把“克里希纳:hivehbase”,“row1”,“评级:bookid”,“book1” 把 'krishna:hivehbase', 'row1', 'ratings:rating', '1'

    把'krishna:hivehbase', 'row2', 'ratings:userid', 'user2' 把“克里希纳:hivehbase”,“row2”,“评级:bookid”,“book1” 把 'krishna:hivehbase', 'row2', 'ratings:rating', '3'

    输入 'krishna:hivehbase', 'row3', 'ratings:userid', 'user2' 把“克里希纳:hivehbase”,“row3”,“评级:bookid”,“book2” 把 'krishna:hivehbase', 'row3', 'ratings:rating', '3'

    输入 'krishna:hivehbase', 'row4', 'ratings:userid', 'user2' 把“克里希纳:hivehbase”,“row4”,“评级:bookid”,“book4” 把 'krishna:hivehbase', 'row4', 'ratings:rating', '1'

  6. 验证表数据

    扫描“克里希纳:hivehbase”

B.在 Hive Shell 中执行操作

  1. 创建外部表

    创建外部表 hbasehive_table (key string, userid string,bookid string,rating int) 由 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 与 SERDEPROPERTIES ("hbase.columns.mapping" = ":key,评级:用户 ID,评级:bookid,评级:评级") TBLPROPERTIES ("hbase.table.name" = "krishna:hivehbase");

  2. 验证外部表

    从 hbasehive_table 中选择 *;

【讨论】:

    猜你喜欢
    • 2015-07-19
    • 1970-01-01
    • 2022-07-10
    • 1970-01-01
    • 2020-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多