1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Databricks on AWSで数百Gのファイルからテーブルを作成しようとすると発生することのあるエラーとその対策

Posted at

ローカルファイルシステムからDBFSへの大容量ファイルのアップロードや大容量ファイルからテーブルを作成する際に、以下のようなエラーが発生することがあります。

Part number must be an integer between 1 and 10000, inclusive

パートの数は1から10000でなくてはなりません。と、これだけですと切り分けが難しいですよね。

以下のナレッジベースに詳細な説明と対策方法の記載があります。

原因
これはS3におけるセグメント数の制限です。分割されたファイルは1から10000の個数でなくてはなりません。

対策
この例外の発生を防ぐには、それぞれのパートファイルのサイズを増やしてください。

  1. クラスターのSpark設定の以下のプロパティを設定してください。

    spark.hadoop.fs.s3a.multipart.size 104857600
    
  2. クラスターを再起動します。

つまり、S3へのマルチパートアップロードのパートの数の上限に引っかかっていたと言うことでした。

Maximum number of parts per upload10,000であり、上の設定でパートあたりのファイルサイズを大きくしてパート数を1万に収まるようにしないといけません。デフォルト値は10MBです。

例えば、500GBのファイルからテーブルを作成しようとすると、5万弱のパートになるので、上述の制限の1万を超えてしまいます。spark.hadoop.fs.s3a.multipart.sizeを50MBに設定すれば、パート数は1万になりますのでエラーを回避することができます。

Databricks 無料トライアル

Databricks 無料トライアル

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?