2017-05-22 4 views
1

ハイブと.txtファイル、.ORCファイル、.parquetファイル。基礎となるHiveテーブルが同じファイルフォーマットを持つ外部テーブルであると仮定すると、Hiveテーブルの形式を読み込むのか、基礎となるファイル自体から読み込むのでしょうか?Sparkがハイブから選択するか、ファイルから選択するほうがいいですか?

マイク

+0

最新のhttps://stackoverflow.com/questions/32373460/parquet-vs-orc-vs-orc-with-snappyの回答は非常に興味深いかもしれません>>ベクトル化は本当のボーナスですローカルの統計情報(両方の機能には円柱フォーマットが必要)、効率的なパーティションプルーニング、適切な圧縮を基にした「述語プッシュダウン」、「スキップスキャン」だけでなく、... –

答えて

1

TL; DR:私は寄木細工のファイルから直接

それを読んでいました、私は私が記録してきたいくつかのタイミングが

ある500万行×100列の表のSpark 1.5.2とハイブ1.2.1 を使用しています
val dffile = sqlContext.read.parquet("/path/to/parquets/*.parquet") 
val dfhive = sqlContext.table("db.table") 

ダフィルカウント - > 0.38s; dfhive count - > 8.99s

dffile sum(col) - > 0.98s; dfhive sum(col) - > 8.10s

dffileサブストリング(col) - > 2.63s; dfhive部分文字列(col) - > 7.77s

dffileここで(col = value) - > 82.59s; >私は速度の向上との間に発生した可能性がどのようにコメントすることはできませんので、これらはハイブの旧バージョンとスパークの古いバージョンで行われたことを

注157.64s - (COLは=値)dfhive 2つの読み取り機構

1

私が理解から、.ORC一般にsparkparquetに向けて最適化され、より良いフラットな構造に適しおよびネストされたもののためparquetであっても。したがって、sparkでその形式を使用することをお勧めします。

さらに、parquetのすべての読み取りテーブルのMetadataは、とにかくhiveに格納されます。 Spark SQL caches Parquet metadata for better performance. When Hive metastore Parquet table conversion is enabled, metadata of those converted tables are also cached. If these tables are updated by Hive or other external tools, you need to refresh them manually to ensure consistent metadata.

私はparquet形式にできるだけ早くデータを変換し、それがalluxiohdfsに裏打ちされた格納する傾向がある:これはスパークドキュメントです。これにより、read/write操作のパフォーマンスを向上させ、cacheを使用して制限することができます。

私はそれが役に立ちそうです。

+0

Alluxioを使用していることは素晴らしいです!しかし、私の質問は、特にハイブとノンハイブに関するものです。 ORC、寄木張り、それは何でも、それは何かによって定義されるかどうか。 ORCを取得する必要があるかもしれません。私はちょうどハイブのテーブル対ファイルについて尋ねています。 –

関連する問題