何千ものcreate table文を含むtxtファイルがあります。 1 CREATE TABLE文例えば不要な文字列をメモ帳で削除する++
は以下の通りです:
CREATE TABLE `dim_idi_rig_bkp_2016_07_31`(
`id` double,
`name` string,
`type` string,
`description` string,
`elid` string,
`ingestion_tsp` timestamp)
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
'hdfs://namesvc/landing/hive/warehouse/dr/lz_data_backup_store.db/dim_idi_rig_bkp_2016_07_31'
TBLPROPERTIES (
'COLUMN_STATS_ACCURATE'='true',
'numFiles'='1',
'numRows'='5111',
'rawDataSize'='303830',
'totalSize'='308941',
'transient_lastDdlTime'='1470114511')
私は、テーブル名とそこに最後の列名とデータベース名を取得しようとしています。
- テーブル名がここにdim_idi_rig_bkp_2016_07_31 TABLE
dim_idi_rig_bkp_2016_07_31
をCREATEテーブル名であるように単一引用符でTBALE単語を作成した後に指定されています。ここ - と最後の列名は
ingestion_tsp
タイムスタンプのような焦がすの引用に行形式のSERDEワードの前に指定されている) 行形式のSERDE ingestion_tsp最後の列名です。 - データベース名は LOCATION のような単一引用符でLOCATIONワードの後の行に指定されている「HDFS://namesvc/landing/hive/warehouse/dr/lz_data_backup_store.db/dim_idi_rig_bkp_2016_07_31」 はここlz_data_backup_storeデータベース名です。
ので、後の私の願望出力リストはどのように我々は正規表現を経由してこれを達成することができ++メモ帳でこの
<table_name> <last_column_name> <database_name>
のようになります。すべての不要な文字列を削除します。このため
私はこれを試しました。* word1(?s:。*?))Word2。*しかし、これでテーブル名を取得できます... – user
これは仕事ではありませんNpp、あなたはあなたの好きなスクリプト言語でスクリプトを書くべきです。 – Toto
そのJavaで難しい..あなたが助けることができる – user