Pular para o conteúdo principal

Trabalhar com arquivos ORC

O Apache ORC é um formato de arquivo colunar que oferece otimizações para acelerar as consultas. É mais eficiente que CSV ou JSON. O Databricks oferece suporte ao ORC para leitura e gravação com o Apache Spark. Para obter mais informações, consulte a documentação Apache Spark sobre arquivosORC.

Pré-requisitos

O Databricks não requer configuração adicional para usar arquivos ORC. No entanto, para transmitir arquivos ORC , você precisa Auto Loader.

Configure e utilize o ORC com a API DataFrame.

Utilize a API DataFrame Apache Spark para ler e write.orc arquivos .orc quando precisar de controle total sobre o esquema, o particionamento ou o comportamento de gravação.

Opções de leitura e escrita

Consulte os seguintes artigos de referência do Apache Spark para obter informações sobre as opções de leitura e gravação da API DataFrame compatíveis.

Leia e write.orc arquivos .orc

Por exemplo, leia data.orc em um DataFrame df e escreva-o em orc_output.

Python
# Read an ORC file into a DataFrame
df = spark.read.format("orc").load("/tmp/data.orc")
df.show()

# Write a DataFrame to ORC format
df.write.format("orc").save("/tmp/orc_output")

# Write with overwrite mode
df.write.format("orc").mode("overwrite").save("/tmp/orc_output")

read.orc arquivos .orc com especificação de esquema

Ao ler arquivos ORC, especifique um esquema para evitar a sobrecarga da inferência de esquema. Por exemplo, defina um esquema com campos name, age e city e leia data.orc em um DataFrame df.

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

schema = StructType([
StructField("name", StringType(), True),
StructField("age", IntegerType(), True),
StructField("city", StringType(), True)
])

df = spark.read.format("orc").schema(schema).load("/tmp/data.orc")
df.printSchema()
df.show()

Escrever arquivos ORC particionados

Escreva arquivos ORC particionados para otimizar o desempenho de consultas em grandes conjuntos de dados. Por exemplo, crie um DataFrame df com colunas year, month, name e amount e escreva-o em partitioned_orc particionado por year e month.

Python
df = spark.createDataFrame(
[
(2023, 1, "Alice", 100),
(2023, 1, "Bob", 200),
(2023, 2, "Alice", 150),
(2024, 1, "Alice", 300),
],
["year", "month", "name", "amount"]
)

# Write partitioned by year and month
df.write.format("orc").partitionBy("year", "month").save("/tmp/partitioned_orc")

read.orc arquivos .orc usando SQL

Use read_files para consultar arquivos ORC diretamente do armazenamento cloud usando SQL sem criar uma tabela. Por exemplo, consulte um arquivo ORC armazenado no armazenamento cloud usando o caminho para o arquivo e o especificador de formato orc .

SQL
SELECT * FROM read_files(
's3://<bucket>/<path>/<file>.orc',
format => 'orc'
)

Configurar compressão ORC

Configure a compressão ORC usando a opção compression . Os codecs suportados incluem none, snappy, zlib e lzo. Por exemplo, escreva df para compressed_orc usando compressão zlib ou para snappy_orc usando compressão snappy .

Python
# Write with zlib compression
df.write.format("orc").option("compression", "zlib").save("/tmp/compressed_orc")

# Write with snappy compression (default)
df.write.format("orc").option("compression", "snappy").save("/tmp/snappy_orc")