2016-08-08 29 views
4

SparkデータフレームをHiveテーブルに通常の読み取り可能なテキスト形式で保存したい。Sparkパーティションハイブテーブルへのデータの書き込みが遅い

final_data1_df = sqlContext.sql("select a, b from final_data") 

と私はでそれを記述しようとしています::そうすることのために私が最初にやった

sqlContext.sql("SET spark.sql.hive.convertMetastoreParquet=false") 

私のデータフレームは次のようである

final_data1_df.write.partitionBy("b").mode("overwrite").saveAsTable("eefe_lstr3.final_data1") 

が、これはより遅く、非常に遅いですHIVEテーブル書き込み。だから私はハイブDDLステートメントを使用してパーティションを定義し、同様にデータをロードすると考えられ、この解決します

sqlContext.sql(""" 
CREATE TABLE IF NOT EXISTS eefe_lstr3.final_data1(
a BIGINT 
) 
PARTITIONED BY (b INT) 
""" 
) 
sqlContext.sql(""" 
INSERT OVERWRITE TABLE eefe_lstr3.final_data1 PARTITION (stategroup) 
select * from final_data1""") 

をが、これはパーティションハイブテーブルそれでも寄木細工形式のデータを与えています。私はここに何かを逃していますか

+0

正確なエラーメッセージは何ですか?また、あなたの 'sqlContext = HiveContext(sc)'は本当ですか? – KartikKannapur

+0

はい私の 'sqlContext'は実際には' HiveContext'です。私は何の誤りもありません。最初のケースでは、書き込みが遅いです。 2番目のケースでは、データは依然として寄木張りです。 – abhiieor

+0

これで何か解決策がありますか? –

答えて

-1

テーブルを明示的に作成すると、そのDDLによってテーブルが定義されます。 通常、テキストファイルはHiveではデフォルトですが、環境内で変更されている可能性があります。

CREATEステートメントの最後に "STORED AS TEXTFILE"を追加して、テーブルがプレーンテキストであることを確認します。

関連する問題