hbaseデータをhiveにバックアップ
7111 ワード
背景
同僚の誤操作により、hiveからhbaseに導く元のデータのテーブルがすべて削除され、hiveのデータを使用する必要がある.私は以下の方法で行います.注意:hiveからhbaseに導くデータはプログラムによって導かれ、それらの主キーが一致しないため、緊急に使用する必要がある場合、計11枚の表を選択し、hbaseの外部表を作成してからhiveの内部表を作成し、Hiveの内部表にデータを洗浄する.
hive外部テーブルの作成方法
hbase対応のHive外部テーブルの構築
hiveのテーブルはすべて削除されましたが、元のテーブル構造はバックアップされています.
上のテーブル構造に基づいて外部テーブルを作成する
上記の文では、
外部テーブルのデータを内部テーブルにパージする
外部テーブルがhbaseテーブルに関連付けられた後、プライマリキーのrow_keyのフォーマットは
その他の方法(補足対象)
同僚の誤操作により、hiveからhbaseに導く元のデータのテーブルがすべて削除され、hiveのデータを使用する必要がある.私は以下の方法で行います.注意:hiveからhbaseに導くデータはプログラムによって導かれ、それらの主キーが一致しないため、緊急に使用する必要がある場合、計11枚の表を選択し、hbaseの外部表を作成してからhiveの内部表を作成し、Hiveの内部表にデータを洗浄する.
hive外部テーブルの作成方法
hbase対応のHive外部テーブルの構築
hiveのテーブルはすべて削除されましたが、元のテーブル構造はバックアップされています.
CREATE TABLE bigdata_graph_cmb_dev.tv_address (
object_key string COMMENT ' ',
standardized_addr string COMMENT ' ( 7 )',
address string COMMENT ' ',
standardized_1 string COMMENT ' - ',
standardized_2 string COMMENT ' - ',
standardized_3 string COMMENT ' - ',
standardized_4 string COMMENT ' - ',
standardized_5 string COMMENT ' - ',
standardized_6 string COMMENT ' - ',
standardized_7 string COMMENT ' - ',
update_date string COMMENT ' '
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS textfile;
上のテーブル構造に基づいて外部テーブルを作成する
create external table tv_address_external(
object_key string COMMENT ' ',
standardized_addr string COMMENT ' ( 7 )',
address string COMMENT ' ',
standardized_1 string COMMENT ' - ',
standardized_2 string COMMENT ' - ',
standardized_3 string COMMENT ' - ',
standardized_4 string COMMENT ' - ',
standardized_5 string COMMENT ' - ',
standardized_6 string COMMENT ' - ',
standardized_7 string COMMENT ' - ',
update_date string COMMENT ' '
)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping"=":key,objects:standardized_addr,objects:address,objects:standardized_1,objects:standardized_2,objects:standardized_3,objects:standardized_4,objects:standardized_5,objects:standardized_6,objects:standardized_7,objects:update_date")
TBLPROPERTIES("hbase.table.name"="bigdata_graph_cmb_dev:tv_address");
上記の文では、
"hbase.columns.mapping"=":key,......."
のhbase.columns.mapping"=":key,
の固定フォーマットは変わらず、key
はhbaseのプライマリ・キーを表し、文にスペースがないとエラーが発生します."hbase.table.name"="bigdata_graph_cmb_dev:tv_address"
のうちbigdata_graph_cmb_dev
はhbaseの空間名である、なければ記入する必要はない.また、文にスペースを入れてはいけません.そうしないと、エラーも発生します.外部テーブルのデータを内部テーブルにパージする
外部テーブルがhbaseテーブルに関連付けられた後、プライマリキーのrow_keyのフォーマットは
${hash }#${object_key}
なのでsplitが必要です.insert overwrite table tv_address
select
split(object_key, '#')[1],
standardized_addr,
address,
standardized_1,
standardized_2,
standardized_3,
standardized_4,
standardized_5,
standardized_6,
standardized_7,
update_date
from tv_address_external;
その他の方法(補足対象)