小さなファイルを処理するスパークSQL

唯一の生産データノード7、各ファイル番号閾値データノード50ワットブロックに1つの
クラスタ全体7 * 50ワット= 350ワット/ 3 = 120ワットブロックコピーの合計に対応することができます!
オン時系列= 10であり、パーティションテーブル12月 365日= 4.4Wブロック25のみメモリテーブル。
通常の状況下で配布:
10 000 20 *、
1000年* 200、
* 2000 100、
* 20000 10、
頭痛が適切に扱われなければならないため、実際の生産は、クラスタリソースを占有し、小さなたくさんのファイルを持つことになります、として次の
ここに画像を挿入説明
配分を用いる方法(spark2.4後)

spark.sql("create table table1 as select /*+ REPARTITION(4) */ * from table_1 where age >18 ")

2つの合成ハイブデフォルトモードを用いた方法(構成平行)

insert overwrite table table_1 select * from table_1;
#分区表
insert overwrite table table_1 partition (day_time='2018-09-01') select * from table_1 where day_time = '2019-08-01';

実際の状況:
データ(データ量)の量は約100000000 40gの、現在のクラスタの性能に応じて:
配分(4)は、25分の程度かかり
配分(10)は10分程度かかり
かの就業配分(4)モード、コージェネレーションワークフロー3広い表計算、所望であれば、追加のコスト25 * 3 = 75分
就業配分(10)モード、3つの広いワークフロー表計算の合計を生成し、所望であれば、追加のコスト10 * 3 = 30分もし
配分が小さいファイルの形式を減少させること、理想的な実際のまたは小さなファイルの数の別々のプログラム処理を記述する必要はありません。そして、タイマータスクは、月に一度実行されます!

公開された118元の記事 ウォン称賛25 ビュー15万+

おすすめ

転載: blog.csdn.net/lhxsir/article/details/99588064