S3FileIO is Apache Iceberg’s file I/O implementation for storing and retrieving table data through Amazon S3 or S3-compatible object storage. In a Spark, Nessie, and MinIO deployment, it connects Iceberg table operations to a configured warehouse and storage endpoint while leaving catalog responsibilities to Nessie. section 3.3.3
Deployment choices determine how S3FileIO fits the lakehouse architecture:
- Use it with SparkCatalog and Nessie settings to write Iceberg tables into MinIO, with branching, time travel, and atomic commits. section 3.3.3
- Use org.apache.iceberg.aws.s3.S3FileIO in AWS Glue when native Iceberg support and optimized S3 I/O are required. section 7.4.8
conf = (
pyspark.SparkConf()
.setAppName('Iceberg Ingestion')
.set('spark.jars.packages',
'org.postgresql:postgresql:42.7.3,'
'org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.5.0,'
'org.projectnessie.nessie-integrations:nessie-spark-extensions-3.5_2.12:0.77.1,'
'software.amazon.awssdk:bundle:2.24.8,'
'software.amazon.awssdk:url-connection-client:2.24.8')
.set('spark.sql.extensions',
'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions,'
'org.projectnessie.spark.extensions.NessieSparkSessionExtensions')
.set('spark.sql.catalog.nessie', 'org.apache.iceberg.spark.SparkCatalog')
.set('spark.sql.catalog.nessie.uri', CATALOG_URI)
.set('spark.sql.catalog.nessie.ref', 'main')
.set('spark.sql.catalog.nessie.authentication.type', 'NONE')
.set('spark.sql.catalog.nessie.catalog-impl', 'org.apache.iceberg.nessie.NessieCatalog')
.set('spark.sql.catalog.nessie.s3.endpoint', STORAGE_URI)
.set('spark.sql.catalog.nessie.warehouse', WAREHOUSE)
.set('spark.sql.catalog.nessie.io-impl', 'org.apache.iceberg.aws.s3.S3FileIO')
) #1
Use the Spark configuration listing to assemble Iceberg, Nessie, AWS SDK, catalog, and S3-compatible storage settings. section 3.3.3
