Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Apache ORC , büyük ölçekli analitik iş yükleri için iyileştirilmiş sütunlu bir dosya biçimidir. Okuma sırasında ilgisiz verileri atlamak için yerleşik dizinleri ve istatistikleri kullanır. Azure Databricks şema belirtimi, bölümleme ve yazma sıkıştırması dahil olmak üzere Apache Spark ile hem okuma hem de yazma için ORC'yi destekler.
Önkoşullar
Azure Databricks, ORC dosyalarını kullanmak için ek yapılandırma gerektirmez. Ancak, ORC dosyalarının akışını yapmak için Otomatik Yükleyici gerekir.
Options
ORC veri kaynaklarını yapılandırmak için .option() ve .options() öğelerinin DataFrameReader ve DataFrameWriter yöntemlerini kullanın. Desteklenen seçeneklerin tam listesi için bkz DataFrameReader . ORC seçenekleri ve DataFrameWriter ORC seçenekleri.
Usage
Aşağıdaki örneklerde Spark DataFrame API'sini ve SQL'i kullanarak ORC dosyalarını okuma ve yazma işlemini göstermek için Wanderbricks örnek veri kümesi kullanılmıştır.
ORC dosyalarını okuma ve yazma
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")
Scala
// Write wanderbricks reviews to ORC format
val reviews = spark.read.table("samples.wanderbricks.reviews")
reviews.write.format("orc").save("/Volumes/<catalog>/<schema>/<volume>/reviews_orc")
// Read an ORC file into a DataFrame
val df = spark.read.format("orc").load("/Volumes/<catalog>/<schema>/<volume>/reviews_orc")
df.show()
// Write with overwrite mode
df.write.format("orc").mode("overwrite").save("/Volumes/<catalog>/<schema>/<volume>/reviews_orc")
SQL
-- Write wanderbricks reviews to ORC format
CREATE TABLE reviews_orc
USING ORC
AS SELECT * FROM samples.wanderbricks.reviews;
SELECT * FROM reviews_orc;
SQL kullanarak ORC dosyalarını okuma
Tablo oluşturmadan SQL kullanarak ORC dosyalarını doğrudan bulut depolamadan sorgulamak için kullanın read_files .
SELECT * FROM read_files(
'/Volumes/<catalog>/<schema>/<volume>/reviews_orc',
format => 'orc'
)
Şema belirtme
Şema çıkarımının ek yükünü önlemek için ORC dosyalarını okurken bir şema belirtin. Örneğin, review_id, rating ve comment alanlarına sahip bir şema tanımlayın ve reviews_orc öğesini bir DataFrame'e okuyun.
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()
Scala
import org.apache.spark.sql.types.{StructType, StructField, StringType, IntegerType}
val schema = StructType(Array(
StructField("review_id", StringType, nullable = true),
StructField("rating", IntegerType, nullable = true),
StructField("comment", StringType, nullable = true)
))
val df = spark.read.format("orc").schema(schema).load("/Volumes/<catalog>/<schema>/<volume>/reviews_orc")
df.printSchema()
df.show()
SQL
-- Create a table with an explicit schema from ORC files
CREATE TABLE reviews_orc (
review_id STRING,
rating INT,
comment STRING
)
USING ORC
OPTIONS (path "/Volumes/<catalog>/<schema>/<volume>/reviews_orc");
SELECT * FROM reviews_orc;
Bölümlenmiş ORC dosyaları yazma
Büyük veri kümelerinde iyileştirilmiş sorgu performansı için bölümlenmiş ORC dosyaları yazın. Örneğin, check_in sütunundan türetilen year ve month ölçütlerine göre bölümlendirerek samples.wanderbricks.bookings öğesini okuyun ve bookings_orc_partitioned öğesine yazın.
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")
Scala
import org.apache.spark.sql.functions.{year, month}
val bookings = spark.read.table("samples.wanderbricks.bookings")
val bookingsWithParts = bookings.withColumn("year", year(col("check_in"))).withColumn("month", month(col("check_in")))
bookingsWithParts.write.format("orc").partitionBy("year", "month").save("/Volumes/<catalog>/<schema>/<volume>/bookings_orc_partitioned")
SQL
-- Write partitioned ORC files by year and month
CREATE TABLE bookings_orc_partitioned
USING ORC
PARTITIONED BY (year, month)
AS SELECT *, year(check_in) AS year, month(check_in) AS month
FROM samples.wanderbricks.bookings;
Ek kaynaklar
- Azure Databricks Delta Lake nedir?: ORC kullanarak bir Hive veya Hadoop ortamından geçiş gerçekleştiriyorsanız, Önerilen Databricks yerel biçimi Delta Lake'tir. Parquet tabanlı depolamaya ek olarak ACID işlem desteği, şema zorunluluğu, zaman yolculuğu ve optimize edilmiş okuma performansı sağlar.
- Parquet dosyalarını okuma ve yazma: İş yükünüz Databricks dışında en geniş ekosistem uyumluluğu gerektiriyorsa Parquet, sorgu altyapıları ve bulut depolama araçları arasında en yaygın olarak desteklenen sütunlu biçimdir.