Zephyrnet Logosu

Apache Iceberg'de birleştirme, bölümleme geliştirme ve şema geliştirme gerçekleştirmek için AWS Glue ETL'yi kullanın | Amazon Web Hizmetleri

Tarih:

İşletmeler çeşitli kaynaklardan artan miktarlarda veri topladıkça, bu verilerin yapısı ve organizasyonunun, gelişen analitik ihtiyaçları karşılamak için sıklıkla zaman içinde değişmesi gerekir. Bununla birlikte, geleneksel veri göllerindeki şema ve tablo bölümlerini değiştirmek, tüm tabloların yeniden adlandırılmasını veya yeniden oluşturulmasını ve büyük veri kümelerinin yeniden işlenmesini gerektiren, işleri aksatan ve zaman alan bir görev olabilir. Bu, çevikliği ve içgörü süresini engeller.

Şema gelişimi, mevcut verileri yeniden yazmaya gerek kalmadan sütunların eklenmesine, silinmesine, yeniden adlandırılmasına veya değiştirilmesine olanak tanır. Bu, hızlı hareket eden kuruluşların yeni kullanım senaryolarını destekleyecek şekilde veri yapılarını güçlendirmesi açısından kritik öneme sahiptir. Örneğin bir e-ticaret şirketi, analitiği zenginleştirmek için yeni müşteri demografik özellikleri veya sipariş durumu bayrakları ekleyebilir. Apaçi Buzdağı yenilikçi meta veri tablosu evrim mimarisi aracılığıyla bu şema değişikliklerini geriye dönük olarak uyumlu bir şekilde yönetir.

Benzer şekilde bölüm evrimi, bölümlerin kesintisiz eklenmesine, bırakılmasına veya bölünmesine olanak tanır. Örneğin, bir e-ticaret pazarı başlangıçta sipariş verilerini günlere göre bölümlendirebilir. Siparişler biriktikçe ve güne göre sorgulama verimsiz hale geldikçe, bunlar gün ve müşteri kimliği bölümlerine bölünebilir. Tablo bölümleme, sorgu performansı için büyük veri kümelerini en verimli şekilde düzenler. Iceberg, işletmelere sıkıcı yeniden inşa prosedürleri gerektirmek yerine bölümleri aşamalı olarak ayarlama esnekliği sağlar. Yeni bölümler, kesinti olmadan veya mevcut veri dosyalarını yeniden yazmaya gerek kalmadan tamamen uyumlu bir şekilde eklenebilir.

Bu yazı Iceberg'i nasıl kullanabileceğinizi gösteriyor. Amazon Basit Depolama Hizmeti (Amazon S3), AWS Tutkal, AWS Göl Oluşumu, ve AWS Kimlik ve Erişim Yönetimi (IAM) kesintisiz gelişimi destekleyen işlemsel bir veri gölü uygulamak. Veri öngörüleri geliştikçe sorunsuz şema ve bölüm ayarlamalarına izin vererek, iş başarısı için gereken geleceğe yönelik esneklikten yararlanabilirsiniz.

Çözüme genel bakış

Örnek kullanım örneğimiz için, hayali büyük bir e-ticaret şirketi her gün binlerce siparişi işliyor. Siparişler alındığında, güncellendiğinde, iptal edildiğinde, gönderildiğinde, teslim edildiğinde veya iade edildiğinde değişiklikler şirket içi sistemlerde yapılır ve veri analistlerinin sorguları çalıştırabilmesi için bu değişikliklerin bir S3 veri gölüne kopyalanması gerekir. Amazon Atina. Değişiklikler şema güncellemelerini de içerebilir. Farklı kuruluşların güvenlik gereksinimleri nedeniyle, Lake Formation aracılığıyla analistler için ayrıntılı erişim kontrolünü yönetmeleri gerekiyor.

Aşağıdaki şemada çözüm mimarisi gösterilmektedir.

Çözüm iş akışı aşağıdaki temel adımları içerir:

  1. Veri alımı ardışık düzenini kullanarak verileri şirket içinden Dropzone konumuna aktarın.
  2. AWS Glue'yu kullanarak Dropzone konumundaki verileri Iceberg'e birleştirin.
  3. Athena'yı kullanarak verileri sorgulayın.

Önkoşullar

Bu izlenecek yol için aşağıdaki ön koşullara sahip olmalısınız:

AWS CloudFormation ile altyapıyı kurun

Altyapınızı oluşturmak için AWS CloudFormation şablon, aşağıdaki adımları tamamlayın:

  1. AWS hesabınızda yönetici olarak oturum açın.
  2. AWS CloudFormation konsolunu açın.
  3. Klinik Yığını Başlat:
  4. İçin Yığın adı, bir ad girin (bu gönderi için, icebergdemo1).
  5. Klinik Sonraki.
  6. Aşağıdaki parametreler için bilgi sağlayın:
    1. DatalakeUserName
    2. DatalakeUserPassword
    3. DatabaseName
    4. TableName
    5. DatabaseLFTagKey
    6. DatabaseLFTagValue
    7. TableLFTagKey
    8. TableLFTagValue
  7. Klinik Sonraki.
  8. Klinik Sonraki tekrar.
  9. içinde Değerlendirme bölümünde girdiğiniz değerleri gözden geçirin.
  10. seç AWS CloudFormation'ın özel adlarla IAM kaynakları oluşturabileceğini kabul ediyorum Ve seç Gönder.

Birkaç dakika içinde yığın durumu şu şekilde değişecek: CREATE_COMPLETE.

Şuraya gidebilirsiniz: Çıkışlar sekmesi Sağladığı tüm kaynakları görmek için yığının. Kaynakların önüne sağladığınız yığın adı eklenir (bu yazı için, icebergdemo1).

Lambda'yı kullanarak bir Buzdağı tablosu oluşturun ve Lake Formation'ı kullanarak erişim izni verin

Bir Buzdağı tablosu oluşturmak ve bu tabloya erişim izni vermek için aşağıdaki adımları tamamlayın:

  1. gidin Kaynaklar CloudFormation yığını icebergdemo1'in sekmesini açın ve adlı mantıksal kimliği arayın LambdaFunctionIceberg.
  2. İlişkili fiziksel kimliğin köprüsünü seçin.

Lambda işlevine yönlendirildiniz icebergdemo1-Lambda-Create-Iceberg-and-Grant-access.

  1. Üzerinde yapılandırma sekmesini seçin Ortam Değişkenleri sol bölmede
  1. Üzerinde Kod sekmesinde fonksiyon kodunu inceleyebilirsiniz.

İşlev şunu kullanır: Python için AWS SDK (Boto3) Kaynakların sağlanmasına yönelik API'ler. Aşağıdaki görevleri gerçekleştirmek için sağlanan veri gölü yöneticisi rolünü üstlenir:

  • Hibe DATA_LOCATION_ACCESS kayıtlı veri gölü konumunda veri gölü yöneticisi rolüne erişim
  • oluşturmak Göl Oluşumu Etiketleri (LF-Tags)
  • AWS Glue kullanarak AWS Glue Veri Kataloğunda bir veritabanı oluşturun CREATE_DATABASE API
  • LF Etiketlerini veritabanına atayın
  • Data lake IAM kullanıcısına ve AWS Glue ETL IAM rolüne LF Etiketlerini kullanarak veritabanında DESCRIBE erişimi verin
  • AWS Glue'yu kullanarak bir Buzdağı tablosu oluşturun create_table API:
response_create_table = glue_client.create_table(
DatabaseName= 'icebergdb1',
OpenTableFormatInput= { 
 'IcebergInput': { 
 'MetadataOperation': 'CREATE',
 'Version': '2'
 }
},
TableInput={
    'Name': ‘ecomorders’,
    'StorageDescriptor': {
        'Columns': [
            {'Name': 'ordernum', 'Type': 'int'},
            {'Name': 'sku', 'Type': 'string'},
            {'Name': 'quantity','Type': 'int'},
            {'Name': 'category','Type': 'string'},
            {'Name': 'status','Type': 'string'},
            {'Name': 'shipping_id','Type': 'string'}
        ],  
        'Location': 's3://icebergdemo1-s3bucketiceberg-vthvwwblrwe8/iceberg/'
    },
    'TableType': 'EXTERNAL_TABLE'
    }
)

  • LF Etiketlerini tabloya atayın
  • Data lake IAM kullanıcısı için Iceberg tablosunda LF-Etiketleri üzerinde DESCRIBE ve SELECT'i verin
  • AWS Glue ETL IAM rolüne Iceberg tablosundaki LF-Tag'lerde ALL, DESCRIBE, SELECT, INSERT, DELETE ve ALTER erişim izni verin
  1. Üzerinde test sekmesini seçin test işlevi çalıştırmak için.

İşlev tamamlandığında “İşlev yürütülüyor: başarılı oldu” mesajını göreceksiniz.

Lake Formation, analitik ve makine öğrenimi için verileri merkezi olarak yönetmenize, güvence altına almanıza ve küresel olarak paylaşmanıza yardımcı olur. Lake Formation ile Amazon S3'teki data lake verileriniz ve Veri Kataloğu'ndaki meta verileri için ayrıntılı erişim kontrolünü yönetebilirsiniz.

Veri gölünüze Iceberg depolama alanı olarak bir Amazon S3 konumu eklemek için, konumu kaydet Göl Oluşumu ile. Daha sonra, bu konuma işaret eden Veri Kataloğu nesnelerine ve konumdaki temel verilere ayrıntılı erişim kontrolü sağlamak için Lake Formation izinlerini kullanabilirsiniz.

CloudFormation yığını veri gölü konumunu kaydetti.

Veri konumu izinleri Lake Formation'da, sorumluların belirlenmiş kayıtlı Amazon S3 konumlarına işaret eden Veri Kataloğu kaynakları oluşturmasına ve değiştirmesine olanak tanır. Veri konumu izinleri Lake Formation'a ek olarak çalışır veri izinleri Veri gölünüzdeki bilgilerin güvenliğini sağlamak için.

Göl Oluşumu etiket tabanlı erişim kontrolü (LF-TBAC) izinleri niteliklere göre tanımlayan bir yetkilendirme stratejisidir. Göl Oluşumunda bu niteliklere LF Etiketleri adı verilir. LF Etiketlerini Data Catalog kaynaklarına, Lake Formation ilkelerine ve tablo sütunlarına ekleyebilirsiniz. Bu LF Etiketlerini kullanarak Lake Formation kaynaklarına ilişkin izinleri atayabilir ve iptal edebilirsiniz. Göl Oluşumu, müdürün etiketi kaynak etiketiyle eşleştiğinde bu kaynaklar üzerinde işlemlere izin verir.

Buzdağı tablosunu Lake Formation konsolundan doğrulayın

Buzdağı tablosunu doğrulamak için aşağıdaki adımları tamamlayın:

  1. Göl Oluşumu konsolunda seçin veritabanları Gezinti bölmesinde.
  2. Şunun için ayrıntılar sayfasını açın: icebergdb1.

İlgili veritabanı LF Etiketlerini görebilirsiniz.

  1. Klinik tablolar Gezinti bölmesinde.
  2. Şunun için ayrıntılar sayfasını açın: ecomorders.

içinde Tablo ayrıntıları bölümünde aşağıdakileri gözlemleyebilirsiniz:

  • tablo formatı olarak gösterir Apaçi Buzdağı
  • Tablo yönetimi olarak gösterir Data Catalog tarafından yönetilmektedir
  • Lokasyon Buzdağı tablosunun veri gölü konumunu listeler

içinde LF-Etiketler bölümünde ilgili LF-Etiketleri tablosunu görebilirsiniz.

içinde Tablo ayrıntıları bölüm, genişlet Gelişmiş tablo özellikleri aşağıdakileri görüntülemek için:

  • metadata_location Buzdağı tablosunun meta veri dosyasının konumunu gösterir
  • table_type olarak gösterir ICEBERG

Üzerinde Şema sekmesinde Iceberg tablosunda tanımlanan sütunları görüntüleyebilirsiniz.

Iceberg'i AWS Glue Data Catalog ve Amazon S3 ile entegre edin

Iceberg, dizinler yerine bir tablodaki bireysel veri dosyalarını izler. Tabloda açık bir taahhüt olduğunda Iceberg veri dosyaları oluşturur ve bunları tabloya ekler. Iceberg meta veri dosyalarındaki tablo durumunu korur. Tablo durumundaki herhangi bir değişiklik, eski meta verilerin atomik olarak yerini alan yeni bir meta veri dosyası oluşturur. Meta veri dosyaları tablo şemasını, bölümleme yapılandırmasını ve diğer özellikleri izler.

Iceberg, işlemleri destekleyen dosya sistemlerinin Amazon S3 gibi nesne depolarıyla uyumlu olmasını gerektirir.

Iceberg, tablo içerikleri için anlık görüntüler oluşturur. Her anlık görüntü, belirli bir zamanda tablodaki veri dosyalarının eksiksiz bir kümesidir. Anlık görüntülerdeki veri dosyaları, tablodaki her veri dosyası, bölüm verileri ve ölçümleri için bir satır içeren bir veya daha fazla bildirim dosyasında depolanır.

Aşağıdaki diyagram bu hiyerarşiyi göstermektedir.

Bir Iceberg tablosu oluşturduğunuzda, önce meta veri klasörünü ve meta veri klasöründe bir meta veri dosyası oluşturur. Veri klasörü, verileri Iceberg tablosuna yüklediğinizde oluşturulur.

Iceberg meta veri dosyasının içeriği

Iceberg meta veri dosyası aşağıdakiler de dahil olmak üzere birçok bilgi içerir:

  • format-sürüm –Buzdağı tablosunun versiyonu
  • Lokasyon – Tablonun Amazon S3 konumu
  • Şemalar – Tablodaki tüm sütunların adı ve veri türü
  • bölüm özellikleri – Bölümlenmiş sütunlar
  • sıralama düzenleri – Sütunların sıralama düzeni
  • özellikleri – Tablo özellikleri
  • geçerli anlık görüntü kimliği – Mevcut anlık görüntü
  • ref – Tablo referansları
  • anlık – Her biri aşağıdaki bilgileri içeren anlık görüntülerin listesi:
    • Sıra numarası – Anlık görüntülerin kronolojik sırayla sıra numarası (en yüksek sayı geçerli anlık görüntüyü temsil eder, ilk anlık görüntü için 1)
    • anlık görüntü kimliği – Anlık görüntü kimliği
    • zaman damgası-ms – Anlık görüntünün işlendiği zaman damgası
    • özet – Gerçekleştirilen değişikliklerin özeti
    • manifest listesi – Bildirimlerin listesi; bu dosya adı snap-< snapshot-id > ile başlar
  • şema kimliği – Şemanın kronolojik sıra numarası (en yüksek sayı mevcut şemayı temsil eder)
  • anlık görüntü günlüğü – Anlık görüntülerin kronolojik sırayla listesi
  • meta veri günlüğü – Meta veri dosyalarının kronolojik sırayla listesi

Meta veri dosyası, tablonun verilerinde ve şemasında yapılan tüm geçmiş değişiklikleri içerir. Meta dosyası dosyasının içeriğini doğrudan gözden geçirmek zaman alıcı bir iş olabilir. Neyse ki, sorgulayabilirsiniz Athena'yı kullanan buzdağı meta verileri.

AWS Glue'da buzdağı çerçevesi

AWS Glue 4.0, Lake Formation'a kayıtlı Iceberg tablolarını destekler. AWS Glue ETL işlerinde aşağıdaki koda ihtiyacınız vardır: Buzdağı çerçevesini etkinleştir:

from awsglue.context import GlueContext
from pyspark.context import SparkContext
from pyspark.conf import SparkConf
aws_account_id = boto3.client('sts').get_caller_identity().get('Account')

args = getResolvedOptions(sys.argv, ['JOB_NAME','warehouse_path']
    
# Set up configuration for AWS Glue to work with Apache Iceberg
conf = SparkConf()
conf.set("spark.sql.extensions", "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions")
conf.set("spark.sql.catalog.glue_catalog", "org.apache.iceberg.spark.SparkCatalog")
conf.set("spark.sql.catalog.glue_catalog.warehouse", args['warehouse_path'])
conf.set("spark.sql.catalog.glue_catalog.catalog-impl", "org.apache.iceberg.aws.glue.GlueCatalog")
conf.set("spark.sql.catalog.glue_catalog.io-impl", "org.apache.iceberg.aws.s3.S3FileIO")
conf.set("spark.sql.catalog.glue_catalog.glue.lakeformation-enabled", "true")
conf.set("spark.sql.catalog.glue_catalog.glue.id", aws_account_id)

sc = SparkContext(conf=conf)
glueContext = GlueContext(sc)
spark = glueContext.spark_session

Temel verilere okuma/yazma erişimi için Lake Formation izinlerine ek olarak, AWS Glue ETL işlerini çalıştırmaya yönelik AWS Glue IAM rolü de verildi göl oluşumu: GetDataAccess IAM izni. Bu izinle Lake Formation, verilere erişim için geçici kimlik bilgileri talebini kabul eder.

CloudFormation yığını sizin için dört AWS Glue ETL işini sağladı. Her işin adı yığın adınızla (icebergdemo1) başlar. İşleri görüntülemek için aşağıdaki adımları tamamlayın:

  1. AWS hesabınızda yönetici olarak oturum açın.
  2. AWS Glue konsolunda seçin ETL işleri Gezinti bölmesinde.
  3. Şununla iş ara: icebergdemo1 adında.

Dropzone'daki verileri Iceberg tablosuyla birleştirin

Kullanım örneğimizde şirket, e-ticaret sipariş verilerini günlük olarak şirket içi konumundan Amazon S3 Dropzone konumuna alıyor. CloudFormation yığını, aşağıdaki şekillerde gösterildiği gibi, 3 gün boyunca örnek siparişleri içeren üç dosyayı yükledi. Verileri Dropzone konumunda görüyorsunuz s3://icebergdemo1-s3bucketdropzone-kunftrcblhsk/data.

AWS Glue ETL işi icebergdemo1-GlueETL1-merge verileri Iceberg tablosuyla birleştirmek için günlük olarak çalışacaktır. Iceberg'e veri eklemek veya güncellemek için aşağıdaki mantığa sahiptir:

  • Giriş verilerinden bir Spark DataFrame oluşturun:
df = spark.read.format(dropzone_dataformat).option("header", True).load(dropzone_path)
df = df.withColumn("ordernum", df["ordernum"].cast(IntegerType())) 
    .withColumn("quantity", df["quantity"].cast(IntegerType()))
df.createOrReplaceTempView("input_table")

  • Yeni bir sipariş için tabloya ekleyin
  • Tablonun eşleşen bir sırası varsa durumu güncelleyin ve shipping_id:
stmt_merge = f"""
    MERGE INTO glue_catalog.{database_name}.{table_name} AS t
    USING input_table AS s 
    ON t.ordernum= s.ordernum
    WHEN MATCHED 
            THEN UPDATE SET 
                t.status = s.status,
                t.shipping_id = s.shipping_id
    WHEN NOT MATCHED THEN INSERT *
    """
spark.sql(stmt_merge)

AWS Glue birleştirme işini çalıştırmak için aşağıdaki adımları tamamlayın:

  1. AWS Glue konsolunda seçin ETL işleri Gezinti bölmesinde.
  2. ETL işini seçin icebergdemo1-GlueETL1-merge.
  3. Üzerinde İşlemler açılır menü, seçin Parametrelerle çalıştır.
  4. Üzerinde Parametreleri çalıştır sayfasına git İş parametreleri.
  5. Için --dropzone_path parametresi, giriş verilerinin S3 konumunu sağlayın (icebergdemo1-s3bucketdropzone-kunftrcblhsk/data/merge1).
  6. Tüm siparişleri eklemek için işi çalıştırın: 1001, 1002, 1003 ve 1004.
  7. Için --dropzone_path parameter, S3 konumunu şu şekilde değiştirin: icebergdemo1-s3bucketdropzone-kunftrcblhsk/data/merge2.
  8. 2001 ve 2002 numaralı siparişleri eklemek ve 1001, 1002 ve 1003 numaralı siparişleri güncellemek için işi yeniden çalıştırın.
  9. Için --dropzone_path parametre, S3 konumunu şu şekilde değiştirin: icebergdemo1-s3bucketdropzone-kunftrcblhsk/data/merge3.
  10. 3001 numaralı siparişi eklemek ve 1001, 1003, 2001 ve 2002 numaralı siparişleri güncellemek için işi yeniden çalıştırın.

Glue ETL işini kullanarak verileri tabloyla birleştirdiğinizde Iceberg tarafından yazılan veri dosyalarını görmek için tablonun veri klasörüne gidin. icebergdemo1-GlueETL1-merge.

Athena'yı kullanarak Buzdağını sorgula

CloudFormation yığını, LF Etiketlerini kullanarak Iceberg tablosunda okuma erişimine sahip olan IAM kullanıcısı iceberguser1'i oluşturdu. Bu kullanıcı aracılığıyla Athena'yı kullanarak Iceberg'i sorgulamak için aşağıdaki adımları tamamlayın:

  1. Olarak giriş yap iceberguser1 için AWS Yönetim Konsolu.
  2. Athena konsolunda, seçin Çalışma Grupları Gezinti bölmesinde.
  3. CloudFormation'ın sağladığı çalışma grubunu bulun (icebergdemo1-workgroup)
  4. Athena motorunun 3. sürümünü doğrulayın.

Athena motoru sürüm 3 destekler Buzdağı dosya formatlarıParke, ORC ve Avro dahil.

  1. Athena sorgu düzenleyicisine gidin.
  2. Açılır menüden icebergdemo1-workgroup çalışma grubunu seçin.
  3. İçin veritabanı, seçmek icebergdb1. Tabloyu göreceksiniz ecomorders.
  4. Iceberg tablosundaki verileri görmek için aşağıdaki sorguyu çalıştırın:
    SELECT * FROM "icebergdb1"."ecomorders" ORDER BY ordernum ;

  5. Tablonun geçerli bölümlerini görmek için aşağıdaki sorguyu çalıştırın:
    DESCRIBE icebergdb1.ecomorders ;

Partition-spec tablonun nasıl bölümlendiğini açıklar. Bu örnekte, tabloda herhangi bir bölüm tanımlamadığınız için bölümlenmiş alan yoktur.

Buzdağı bölümünün evrimi

Bölüm yapınızı değiştirmeniz gerekebilir; örneğin, aşağı yönlü analizlerdeki ortak sorgu modellerindeki trend değişiklikleri nedeniyle. Geleneksel tablolar için bölüm yapısının değiştirilmesi, tüm veri kopyasını gerektiren önemli bir işlemdir.

Iceberg bunu basitleştiriyor. Iceberg'deki bölüm yapısını değiştirdiğinizde veri dosyalarını yeniden yazmanızı gerektirmez. Daha önceki bölümlerle yazılan eski veriler değişmeden kalır. Yeni veriler, yeni düzende yeni özellikler kullanılarak yazılır. Bölümleme sürümlerinin her birine ait meta veriler ayrı ayrı tutulur.

AWS Glue ETL işini kullanarak bölüm alanı kategorisini Buzdağı tablosuna ekleyelim icebergdemo1-GlueETL2-partition-evolution:

ALTER TABLE glue_catalog.icebergdb1.ecomorders
    ADD PARTITION FIELD category ;

AWS Glue konsolunda ETL işini çalıştırın icebergdemo1-GlueETL2-partition-evolution. İş tamamlandığında Athena'yı kullanarak bölümleri sorgulayabilirsiniz.

DESCRIBE icebergdb1.ecomorders ;

SELECT * FROM "icebergdb1"."ecomorders$partitions";

Bölüm alanı kategorisini görebilirsiniz ancak bölüm değerleri boştur. Veri klasöründe yeni veri dosyası yoktur çünkü bölüm geliştirme bir meta veri işlemidir ve veri dosyalarını yeniden yazmaz. Veri eklediğinizde veya güncellediğinizde, karşılık gelen bölüm değerlerinin doldurulduğunu göreceksiniz.

Buzdağı şeması gelişimi

Iceberg yerinde tablo gelişimini destekler. Yapabilirsiniz bir tablo şeması geliştirin tıpkı SQL'deki gibi. Buzdağı şema güncellemeleri meta veri değişiklikleridir, dolayısıyla şema gelişimini gerçekleştirmek için hiçbir veri dosyasının yeniden yazılmasına gerek yoktur.

Iceberg şeması gelişimini keşfetmek için ETL işini çalıştırın icebergdemo1-GlueETL3-schema-evolution AWS Glue konsolu aracılığıyla. İş aşağıdaki SparkSQL ifadelerini çalıştırır:

ALTER TABLE glue_catalog.icebergdb1.ecomorders
    ADD COLUMNS (shipping_carrier string) ;

ALTER TABLE glue_catalog.icebergdb1.ecomorders
    RENAME COLUMN shipping_id TO tracking_number ;

ALTER TABLE glue_catalog.icebergdb1.ecomorders
    ALTER COLUMN ordernum TYPE bigint ;

Athena sorgu düzenleyicisinde aşağıdaki sorguyu çalıştırın:

SELECT * FROM "icebergdb1"."ecomorders" ORDER BY ordernum asc ;

Şema değişikliklerini Iceberg tablosunda doğrulayabilirsiniz:

  • adlı yeni bir sütun eklendi. shipping_carrier
  • Sütun shipping_id olarak yeniden adlandırıldı tracking_number
  • Sütunun veri türü ordernum int'ten bigint'e değişti
    DESCRIBE icebergdb1.ecomorders;

Konumsal güncelleme

İçindeki veriler tracking_number takip numarasıyla birleştirilmiş nakliye taşıyıcısını içerir. Nakliye şirketini bölgede tutmak için bu verileri bölmek istediğimizi varsayalım. shipping_carrier alanı ve takip numarası tracking_number alan.

AWS Glue konsolunda ETL işini çalıştırın icebergdemo1-GlueETL4-update-table. İş, tabloyu güncellemek için aşağıdaki SparkSQL deyimini çalıştırır:

UPDATE glue_catalog.icebergdb1.ecomorders
SET shipping_carrier = substring(tracking_number,1,3),
    tracking_number = substring(tracking_number,4,50)
WHERE tracking_number != '' ;

Güncellenen verileri doğrulamak için Iceberg tablosunu sorgulayın tracking_number ve shipping_carrier.

SELECT * FROM "icebergdb1"."ecomorders" ORDER BY ordernum ;

Artık veriler tabloda güncellendiğine göre, kategori için doldurulmuş bölüm değerlerini görmelisiniz:

SELECT * FROM "icebergdb1"."ecomorders$partitions"
ORDER BY partition;

Temizlemek

Gelecekte ücret alınmasını önlemek için oluşturduğunuz kaynakları temizleyin:

  1. Lambda konsolunda işlevin ayrıntılar sayfasını açın icebergdemo1-Lambda-Create-Iceberg-and-Grant-access.
  2. içinde Ortam Değişkenleri bölümünde anahtarı seçin Task_To_Perform ve değeri şu şekilde güncelleyin: CLEANUP.
  3. Veritabanını, tabloyu ve bunlarla ilişkili LF Etiketlerini bırakan işlevi çalıştırın.
  4. AWS CloudFormation konsolunda icebergdemo1 yığınını silin.

Sonuç

Bu yazıda, AWS Glue API'sini kullanarak bir Iceberg tablosu oluşturdunuz ve işlemsel veri gölündeki Iceberg tablosuna erişimi kontrol etmek için Lake Formation'ı kullandınız. AWS Glue ETL işleriyle verileri Iceberg tablosuyla birleştirdiniz ve Iceberg tablosunu yeniden yazmaya veya yeniden oluşturmaya gerek kalmadan şema geliştirme ve bölüm geliştirme gerçekleştirdiniz. Athena ile Iceberg verilerini ve meta verilerini sorguladınız.

Bu gönderideki konseptlere ve gösterimlere dayanarak artık Iceberg, AWS Glue, Lake Formation ve Amazon S3 kullanarak bir kuruluşta işlemsel veri gölü oluşturabilirsiniz.


Yazar Hakkında

Satya Adimula Boston merkezli AWS'de Kıdemli Veri Mimarıdır. Veri ve analitik alanında yirmi yılı aşkın deneyimiyle Satya, kuruluşların verilerinden geniş ölçekte iş öngörüleri elde etmelerine yardımcı oluyor.

spot_img

En Son İstihbarat

spot_img