Pular para o conteúdo principal

Leia e write.orc arquivos .orc

Apache ORC é um formato de arquivo em coluna otimizado para cargas de trabalho analíticas em grande escala. Ele usa índices e estatísticas integrados para pular dados irrelevantes durante as leituras. O Databricks suporta ORC para leitura e gravação com Apache Spark, incluindo especificação de esquema, particionamento e compressão de gravação.

Pré-requisitos

A Databricks não exige configuração adicional para usar arquivos ORC. No entanto, para transmitir arquivos ORC, é necessário Auto Loader.

Opções

Use os métodos .option() e .options() de DataFrameReader e DataFrameWriter para configurar a fonte de dados ORC . Para obter uma lista completa das opções suportadas, consulte DataFrameReader Opções ORC e DataFrameWriter Opções ORC.

Uso

Os exemplos a seguir usam o dataset de exemplo Wanderbricks para demonstrar a leitura e gravação de arquivos ORC usando a API do Spark DataFrame e SQL.

Leia e write.orc arquivos .orc

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")

read.orc arquivos .orc usando SQL

Use read_files para consultar arquivos ORC diretamente do armazenamento em cloud usando SQL sem criar uma tabela.

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

Especificar esquema

Especifique um esquema ao ler arquivos ORC para evitar a sobrecarga da inferência de esquema. Por exemplo, defina um esquema com os campos review_id, rating e comment e leia reviews_orc em um 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()

Escrever arquivos ORC particionados

Escreva arquivos ORC particionados para desempenho de consulta otimizado em grandes conjuntos de dados. Por exemplo, leia samples.wanderbricks.bookings e o grave em bookings_orc_partitioned particionado por year e month derivado da coluna 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")

Recursos adicionais

  • O que é Delta Lake no Databricks?: Se você está migrando de um ambiente Hive ou Hadoop usando ORC, Delta Lake é o formato nativo do Databricks recomendado. Adiciona transações ACID, imposição de esquema, viagem do tempo e desempenho de leitura otimizado sobre o armazenamento baseado em Parquet.
  • Ler e gravar arquivos Parquet: Se sua carga de trabalho exige a maior compatibilidade de ecossistema fora do Databricks, Parquet é o formato colunar mais amplamente suportado entre mecanismos de consulta e ferramentas de armazenamento em nuvem.