ハイブと.txtファイル、.ORCファイル、.parquetファイル。基礎となるHiveテーブルが同じファイルフォーマットを持つ外部テーブルであると仮定すると、Hiveテーブルの形式を読み込むのか、基礎となるファイル自体から読み込むのでしょうか?Sparkがハイブから選択するか、ファイルから選択するほうがいいですか?
マイク
ハイブと.txtファイル、.ORCファイル、.parquetファイル。基礎となるHiveテーブルが同じファイルフォーマットを持つ外部テーブルであると仮定すると、Hiveテーブルの形式を読み込むのか、基礎となるファイル自体から読み込むのでしょうか?Sparkがハイブから選択するか、ファイルから選択するほうがいいですか?
マイク
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つの読み取り機構
私が理解から、.ORC
一般にspark
がparquet
に向けて最適化され、より良いフラットな構造に適しおよびネストされたもののため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
形式にできるだけ早くデータを変換し、それがalluxio
hdfs
に裏打ちされた格納する傾向がある:これはスパークドキュメントです。これにより、read/write
操作のパフォーマンスを向上させ、cache
を使用して制限することができます。
私はそれが役に立ちそうです。
Alluxioを使用していることは素晴らしいです!しかし、私の質問は、特にハイブとノンハイブに関するものです。 ORC、寄木張り、それは何でも、それは何かによって定義されるかどうか。 ORCを取得する必要があるかもしれません。私はちょうどハイブのテーブル対ファイルについて尋ねています。 –
最新のhttps://stackoverflow.com/questions/32373460/parquet-vs-orc-vs-orc-with-snappyの回答は非常に興味深いかもしれません>>ベクトル化は本当のボーナスですローカルの統計情報(両方の機能には円柱フォーマットが必要)、効率的なパーティションプルーニング、適切な圧縮を基にした「述語プッシュダウン」、「スキップスキャン」だけでなく、... –