2016-07-28 26 views
2

私の外部ハイブテーブルのパーティションの場所を変更しようとしています。ハイブでパーティションの場所を変更できません

私が実行しようとするコマンド:私が得る

ALTER TALBE sl_uploads PARTITION (hivetimestamp='2016-07-26 15:00:00') SET LOCATION '/data/dev/event/uploads/hivetimestamp=2016-07-26 15:00:00' 

がエラー:特定のパーティションの

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. java.net.URISyntaxException: Illegal character in path 

私のデータは、パスに存在する:

/data/dev/event/uploads/hivetimestamp=date time/actual_data 

私はスペースを考えます問題を作り出しています。しかし、これについてのどんな助けも素晴らしいでしょう。

+0

は使用してスペースをエスケープしてみてください\:SETのLOCATION '/データは/ dev /イベント/アップロード/ hivetimestamp = 2016年7月26日15時00分00秒\' は動作しません –

+0

はありません。それでも同じエラーが発生します。私はスペース文字をスキップするために前にそれを試していた。 – Austin

答えて

0

パス内のhdfsは正しいですか?

add/actual_data /?

0

ハイブは "2016-07-26 15:00:00"のスペースのために完全なhdfsパスを読み取ることができません。 以下のコマンドを使用できます。

hive> set part=2016-07-26 15:00:00; 
hive>ALTER TALBE sl_uploads PARTITION (hivetimestamp='2016-07-26 15:00:00') SET LOCATION '/data/dev/event/uploads/[email protected]'; 
+0

パーツを設定してパーティションの位置を変更しますが、sl_uploadsからselect count(*)を実行するとhivetimestamp = '2016-07-26 15:00:00'のように動作しません。 FAILED:SemanticException java.io.FileNotFoundException:ファイルhdfs://データ/ dev/event/uploads/hivetimestamp = @ partが存在しません。 – Austin

関連する問題