Aller au contenu principal

Lecture et write.orc fichiers

Apache ORC est un format de fichier en colonnes optimisé pour les charges de travail analytiques à grande échelle. Il utilise des index et des statistiques intégrés pour ignorer les données non pertinentes pendant les lectures. Databricks prend en charge ORC pour la lecture et l'écriture avec Apache Spark, y compris la spécification de schéma, le partitionnement et la compression d'écriture.

Prérequis

Databricks ne nécessite pas de configuration supplémentaire pour utiliser les fichiers ORC. Cependant, pour Stream les fichiers ORC, vous avez besoin d'Auto Loader.

Options

Utilisez les méthodes .option() et .options() de DataFrameReader et DataFrameWriter pour configurer des sources de données ORC. Pour une liste complète des options prises en charge, consultez DataFrameReader options ORC et DataFrameWriter options ORC.

Utilisation

Les exemples suivants utilisent le Wanderbricks sample dataset pour démontrer la lecture et l'écriture de fichiers ORC à l'aide de l'API Spark DataFrame et de SQL.

Lecture et write.orc fichiers

Python
# Write wanderbricks reviews to ORC format
df = spark.read.table("samples.wanderbricks.reviews")
df.write.format("orc").save("/Volumes/<catalog>/<schema>/<volume>/reviews_orc")

# Read an ORC file into a DataFrame
df = spark.read.format("orc").load("/Volumes/<catalog>/<schema>/<volume>/reviews_orc")
display(df)

# Write with overwrite mode
df.write.format("orc").mode("overwrite").save("/Volumes/<catalog>/<schema>/<volume>/reviews_orc")

Lire les fichiers ORC avec SQL

Utilisez read_files pour interroger des fichiers ORC directement depuis le stockage cloud en utilisant SQL sans créer de table.

SQL
SELECT * FROM read_files(
'/Volumes/<catalog>/<schema>/<volume>/reviews_orc',
format => 'orc'
)

Spécifiez un schéma

Spécifiez un schéma lors de la lecture des fichiers ORC afin d'éviter la surcharge de l'inférence de schéma. Par exemple, définissez un schéma avec les champs review_id, rating et comment et lisez reviews_orc dans un DataFrame.

Python
from pyspark.sql.types import StructType, StructField, StringType, IntegerType

schema = StructType([
StructField("review_id", StringType(), True),
StructField("rating", IntegerType(), True),
StructField("comment", StringType(), True)
])

df = spark.read.format("orc").schema(schema).load("/Volumes/<catalog>/<schema>/<volume>/reviews_orc")
df.printSchema()
df.show()

Écriture de fichiers ORC partitionnés

Écrivez des fichiers ORC partitionnés pour des performances de query optimisées sur de grands datasets. Par exemple, lisez samples.wanderbricks.bookings et écrivez-le dans bookings_orc_partitioned partitionné par year et month dérivé de la colonne check_in.

Python
from pyspark.sql.functions import year, month

df = spark.read.table("samples.wanderbricks.bookings")
df_with_parts = df.withColumn("year", year("check_in")).withColumn("month", month("check_in"))
df_with_parts.write.format("orc").partitionBy("year", "month").save("/Volumes/<catalog>/<schema>/<volume>/bookings_orc_partitioned")

Ressources supplémentaires

  • Qu'est-ce que Delta Lake dans Databricks ?: Si vous migrez d'un environnement Hive ou Hadoop utilisant ORC, Delta Lake est le format natif recommandé par Databricks. Il ajoute des Transactions ACID, l'application des schémas, le time travel et des performances de lecture optimisées en plus du stockage basé sur Parquet.
  • Lire et écrire des fichiers Parquet: Si votre charge de travail exige la plus large compatibilité d'écosystème en dehors de Databricks, Parquet est le format columnar le plus largement pris en charge par les moteurs de query et les outils de stockage cloud.