2016-11-04 9 views
0

私は非常に多くのファイルを持っているという点でhdfsディレクトリを持っています。このディレクトリは連続的なデータを取得しています。私は何をしようとしていますか? as、ハイブのパーティションテーブルのHDFSロケーションを指定する方法

create external table sensor_data(sensor_name string,alert_type string,isvalid_alert boolean,value string,alert_generated_time bigint) 
partitioned by (mac_id string) 
clustered by(sensor_name) into 13 buckets 
row format delimited 
fields terminated by '|' 
lines terminated by '\n' 
location '/user/test'; 

テーブルが正常に作成されていますが、選択中は何も表示されません。 select * from sensor_dataここで、mac_id = 'mac_id2'; select * from sensor_data;

私はこれらの2つの方法を試しましたが、私が紛失しているものは理解できません。

答えて

1

ハイブのパーティション表には、特定の構造を有する:

テーブルの場所で使用すると、各パーティションのフォルダを持っている必要があります/user/test:また

/user/test/mac_id=1 
/user/test/mac_id=2 
... 

、新しいフォルダ/パーティションを作成 - あなた実行によってテーブルのメタデータを更新する必要があるMSCK REPAIR TABLE sensor_data

データには、定義する区切り文字が必要です。

また、テーブルがクラスタ化されているため、データをクラスタ化する必要があります。

ハイブのINSERT INTO TABLEを使用してこのテーブルにデータを挿入し、正しいデータ形式を確認することをお勧めします。

関連する問題