日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

文檔

Hive訪問EMR HBase數(shù)據(jù)

在阿里云E-MapReduce(EMR)中,Hive支持通過內(nèi)部表和外部表兩種方式來訪問和處理存儲(chǔ)在HBase中的數(shù)據(jù)。本文通過示例為您介紹,如何使用EMR上的Hive處理EMR HBase數(shù)據(jù)。

前提條件

  • 已創(chuàng)建選擇了Hive、HBase和Zookeeper服務(wù)的自定義集群(Custom),詳情請參見創(chuàng)建集群

  • 已登錄集群,詳情請參見登錄集群

Hive通過內(nèi)表訪問HBase

如果HBase中沒有已經(jīng)創(chuàng)建好的表,則可以在Hive中創(chuàng)建表,Hive會(huì)自動(dòng)把表結(jié)構(gòu)和數(shù)據(jù)寫入到HBase中。本示例是在Hive中新建表訪問HBase。

  1. 執(zhí)行以下命令,進(jìn)入Hive命令行。

    hive
  2. 在Hive中創(chuàng)建并查詢表數(shù)據(jù)。
    1. 執(zhí)行以下命令,在Hive中創(chuàng)建HBase表。
      create table hive_hbase_table(key int, value string)
      stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
      with serdeproperties("hbase.columns.mapping" = ":key,cf1:val")
      tblproperties("hbase.table.name" = "hive_hbase_table", "hbase.mapred.output.outputtable" = "hive_hbase_table");
      說明 表的存儲(chǔ)方式是HBaseStorageHandler,可以存儲(chǔ)和讀取HBase數(shù)據(jù)。
    2. 執(zhí)行以下命令,向表中插入數(shù)據(jù)。
      insert into hive_hbase_table values(212,'bab');
    3. 執(zhí)行以下命令,查看表數(shù)據(jù)。
      select * from hive_hbase_table;
      返回信息如下。
      OK
      212 bab
      Time taken: 0.337 seconds, Fetched: 1 row(s)
  3. 退出Hive命令行后,執(zhí)行以下命令,進(jìn)入HBase命令行。

    hbase shell
  4. 執(zhí)行以下命令,查看是否已經(jīng)通過Hive在HBase中創(chuàng)建了表。

    describe 'hive_hbase_table'

    返回信息如下。describe

    說明

    查看表已存在,說明Hive已經(jīng)在HBase中創(chuàng)建了表。

  5. 執(zhí)行以下命令,在HBase中查看Hive寫的數(shù)據(jù)是否已存在。

    scan 'hive_hbase_table'

    返回信息如下。

    ROW                                           COLUMN+CELL                                                                                                                          
     212                                          column=cf1:val, timestamp=****, value=bab                                                                                   
    1 row(s) in 0.2320 seconds
    說明

    查看數(shù)據(jù)已存在,并且與在Hive中插入的數(shù)據(jù)一致,說明Hive已經(jīng)成功訪問了HBase的數(shù)據(jù)。

Hive通過外表訪問HBase

如果已經(jīng)在HBase中創(chuàng)建了表,想通過Hive訪問,則可以使用Hive外表的方式與HBase中的表建立映射關(guān)系,進(jìn)而通過Hive訪問HBase中已經(jīng)存在的表。

  1. 退出Hive命令行后,執(zhí)行以下命令,進(jìn)入HBase命令行。

    hbase shell
  2. 在HBase中創(chuàng)建并查詢表數(shù)據(jù)。
    1. 執(zhí)行以下命令,在HBase中創(chuàng)建表。
      create 'hbase_table','f'
    2. 執(zhí)行以下命令,向表中插入數(shù)據(jù)。
      put 'hbase_table','1122','f:col1','hello'
    3. 執(zhí)行以下命令,查看表數(shù)據(jù)。
      scan 'hbase_table'
      返回信息如下。
      ROW                                                COLUMN+CELL
       1122                                              column=f:col1, timestamp=1627027165760, value=hello
      1 row(s) in 0.0170 seconds
  3. 退出HBase命令行后,執(zhí)行以下命令,進(jìn)入Hive命令行。

    hive
  4. 執(zhí)行以下命令,在Hive中創(chuàng)建外表,并與HBase中的表建立映射關(guān)系。
    create external table hbase_table(key int,col1 string,col2 string)
    stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
    with serdeproperties("hbase.columns.mapping" = "f:col1,f:col2")
    tblproperties("hbase.table.name" = "hbase_table", "hbase.mapred.output.outputtable" = "hbase_table");
  5. 執(zhí)行以下命令,在Hive中查看hbase_table數(shù)據(jù)。

    select * from hbase_table;

    返回信息如下。

    1122  hello NULL
    說明

    查看數(shù)據(jù)已存在,并且與在HBase中插入的數(shù)據(jù)一致,說明Hive已經(jīng)成功訪問了HBase的數(shù)據(jù)。

EMR HBase開啟Kerberos

如果EMR HBase開啟了Kerberos,Hive關(guān)聯(lián)HBase表并進(jìn)行查詢時(shí),則需要設(shè)置Kerberos相關(guān)參數(shù),設(shè)置方式有以下兩種:

  • Hive命令行設(shè)置

    set hbase.security.authentication=kerberos;
    set hbase.master.kerberos.principal=hbase/_HOST@EMR.${CLUSTER_ID}.COM;
    set hbase.regionserver.kerberos.principal=hbase/_HOST@EMR.${CLUSTER_ID}.COM;
    set hbase.zookeeper.quorum=master-1-1;
  • 環(huán)境變量設(shè)置

    env HIVE_OPTS="-hiveconf hbase.security.authentication=kerberos -hiveconf hbase.master.kerberos.principal=hbase/_HOST@EMR.${CLUSTER_ID}.COM -hiveconf hbase.regionserver.kerberos.principal=hbase/_HOST@EMR.${CLUSTER_ID}.COM -hiveconf hbase.zookeeper.quorum=master-1-1" hive
說明

${CLUSTER_ID}獲取方式,可以登錄集群節(jié)點(diǎn),執(zhí)行hostname命令,命令返回值中'.'后以'c-'開頭到結(jié)尾的字符串轉(zhuǎn)換為大寫即可。

相關(guān)文檔

如需訪問云數(shù)據(jù)庫HBase的數(shù)據(jù),詳情請參見Hive訪問云HBase數(shù)據(jù)