2

でさまざまな計算を (UDF を使用して) 実行していHiveます。計算は十分に高速ですが、書き込みパフォーマンスが .1 で障害にぶつかっていHiveます。私の結果セットは 1,000 万レコードに近く、それらをテーブルに書き込むのに数分かかります。キャッシュされたテーブルとさまざまなファイル形式 ( ORCAND RC) を試しましたが、パフォーマンスの向上は見られませんでした。

を使用しているため、インデックスは使用できませんShark。書き込みパフォーマンスを改善するために試すことができるさまざまな方法について、SO コミュニティからの提案を知ることができれば幸いです。

ありがとう、TM

4

1 に答える 1

1

サメは非推奨なのであまり使用していませんが、spark SQL のように寄木細工のファイルを読み書きする機能があると思います。スパークSQLでは、それは簡単です(ウェブサイトから):

val people: RDD[Person] = ... // An RDD of case class objects, from the previous example.

// The RDD is implicitly converted to a SchemaRDD, allowing it to be stored using Parquet.
people.saveAsParquetFile("people.parquet")

// Read in the parquet file created above.  Parquet files are self-describing so the schema is preserved.
// The result of loading a Parquet file is also a JavaSchemaRDD.
val parquetFile = sqlContext.parquetFile("people.parquet")

基本的に寄木細工は、別のフレームワークを考慮せずに IO 速度を改善するための最善の策です ( impalaは非常に高速であると想定されていますが、クエリはより制限されています)。これは、多くの行を持つテーブルがある場合、parquet では列形式で格納されているため、必要な行のみを逆シリアル化できるためです。さらに、同じタイプのデータをメモリに並べて保存すると、圧縮率が向上するため、通常のストレージよりもデシリアライズが高速になる可能性があります。また、コメントで述べたように、サメはサポートされなくなり、構文に関して大きな違いがあるとは思わないため、spark SQL にアップグレードすることをお勧めします。

于 2014-07-25T21:25:09.263 に答える