2017-01-04 9 views
1

spive sqlをハイブで実行しています。新しいハイブテーブルを作成するときにauto.purgeテーブルのプロパティを追加する必要があります。私はsaveAsTableメソッドの呼び出し中にオプションを追加するためのコードの下にしようとした:コードの線の上Spark Sql 1.5 dataframe saveAsTableハイブテーブルのプロパティを追加する方法

inputDF.write.option("auto.purge" -> "true").saveAsTable(hiveTableName) 

は、テーブルのSERDEPROPERTIES WITH下プロパティを追加しました。 ハイブDDLのTBLPROPERTIESセクションにこのプロパティを追加する必要があります。

+0

使用しているHiveのバージョンは? –

+0

1.2.1ハイブ。私がドロップテーブルxyzパージを試みたとき。スパークSQLはパージを無視し、暗号化ゾーンから削除できないという例外を出します。 –

+0

このプロパティは機能していないようです。あなたはあなたの質問で言及したのと同じ方法をドロップしていますか? –

答えて

0

最後に私は解決策を見つけました。これが最善の解決策であるかどうかはわかりません。 残念ながら、Spark 1.5のsql saveAsTableメソッドは、入力としてテーブルプロパティをサポートしていません。ハイブテーブル作成の前に新しいtablePropertiesマップを作成しています。 コードの下にあるチェックアウト: https://github.com/apache/spark/blob/v1.5.0/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveMetastoreCatalog.scala

既存のハイブテーブルにテーブルプロパティを追加するには、alter tableコマンドを使用します。

ALTER TABLE table_name SET TBLPROPERTIES ('auto.purge'='true'); 

上記のコマンドは、ハイブのメタストアにテーブルプロパティを追加します。 dropコマンドの前に上記のコマンドを実行して、暗号化ゾーン内に既存のテーブルをドロップする。