شعار زيفيرنت

استخدم AWS Glue ETL لإجراء الدمج وتطوير القسم وتطوير المخطط على Apache Iceberg | خدمات الويب الأمازون

التاريخ:

نظرًا لأن المؤسسات تقوم بجمع كميات متزايدة من البيانات من مصادر مختلفة، فغالبًا ما يحتاج هيكل تلك البيانات وتنظيمها إلى التغيير بمرور الوقت لتلبية الاحتياجات التحليلية المتطورة. ومع ذلك، قد يكون تغيير أقسام المخطط والجدول في بحيرات البيانات التقليدية مهمة مزعجة وتستغرق وقتًا طويلاً، مما يتطلب إعادة تسمية أو إعادة إنشاء الجداول بأكملها وإعادة معالجة مجموعات البيانات الكبيرة. وهذا يعيق خفة الحركة والوقت للبصيرة.

يتيح تطور المخطط إضافة الأعمدة أو حذفها أو إعادة تسميتها أو تعديلها دون الحاجة إلى إعادة كتابة البيانات الموجودة. يعد هذا أمرًا بالغ الأهمية للمؤسسات سريعة الحركة لزيادة هياكل البيانات لدعم حالات الاستخدام الجديدة. على سبيل المثال، قد تقوم شركة التجارة الإلكترونية بإضافة سمات ديموغرافية جديدة للعملاء أو علامات حالة الطلب لإثراء التحليلات. اباتشي فيض يدير تغييرات المخطط هذه بطريقة متوافقة مع الإصدارات السابقة من خلال بنية تطور جدول البيانات الوصفية المبتكرة.

وبالمثل، يسمح تطور الأقسام بإضافة الأقسام أو إسقاطها أو تقسيمها بسلاسة. على سبيل المثال، قد يقوم سوق التجارة الإلكترونية في البداية بتقسيم بيانات الطلب حسب اليوم. عندما تتراكم الطلبات، ويصبح الاستعلام اليومي غير فعال، فقد تنقسم إلى قسم اليوم وقسم معرف العميل. يقوم تقسيم الجدول بتنظيم مجموعات البيانات الكبيرة بكفاءة أكبر لأداء الاستعلام. يمنح Iceberg المؤسسات المرونة اللازمة لضبط الأقسام بشكل متزايد بدلاً من المطالبة بإجراءات إعادة البناء المملة. يمكن إضافة أقسام جديدة بطريقة متوافقة تمامًا دون توقف أو الحاجة إلى إعادة كتابة ملفات البيانات الموجودة.

يوضح هذا المنشور كيف يمكنك تسخير Iceberg، خدمة تخزين أمازون البسيطة (Amazon S3) ، غراء AWS, تكوين بحيرة AWSو إدارة الهوية والوصول AWS (IAM) لتنفيذ بحيرة بيانات المعاملات التي تدعم التطور السلس. من خلال السماح بإجراء تعديلات غير مؤلمة على المخططات والأقسام مع تطور رؤى البيانات، يمكنك الاستفادة من المرونة المستقبلية اللازمة لنجاح الأعمال.

نظرة عامة على الحل

في مثالنا لحالة الاستخدام، تقوم شركة تجارة إلكترونية كبيرة خيالية بمعالجة آلاف الطلبات كل يوم. عند استلام الطلبات أو تحديثها أو إلغائها أو شحنها أو تسليمها أو إرجاعها، يتم إجراء التغييرات في نظامها المحلي، ويجب نسخ هذه التغييرات إلى بحيرة بيانات S3 حتى يتمكن محللو البيانات من تشغيل الاستعلامات من خلال أمازون أثينا. يمكن أن تحتوي التغييرات على تحديثات المخطط أيضًا. نظرًا للمتطلبات الأمنية للمؤسسات المختلفة، فإنها تحتاج إلى إدارة التحكم الدقيق في الوصول للمحللين من خلال Lake Formation.

يوضح الرسم البياني التالي بنية الحل.

يتضمن سير عمل الحل الخطوات الأساسية التالية:

  1. استوعب البيانات من مكان العمل إلى موقع Dropzone باستخدام مسار استيعاب البيانات.
  2. قم بدمج البيانات من موقع Dropzone في Iceberg باستخدام AWS Glue.
  3. الاستعلام عن البيانات باستخدام أثينا.

المتطلبات الأساسية المسبقة

في هذا الدليل ، يجب أن يكون لديك المتطلبات الأساسية التالية:

قم بإعداد البنية التحتية باستخدام AWS CloudFormation

لإنشاء البنية التحتية الخاصة بك باستخدام تكوين سحابة AWS القالب، أكمل الخطوات التالية:

  1. قم بتسجيل الدخول كمسؤول إلى حساب AWS الخاص بك.
  2. افتح وحدة تحكم AWS CloudFormation.
  3. اختار قم بتشغيل Stack:
  4. في حالة اسم المكدس، أدخل اسمًا (لهذا المنشور، Icebergdemo1).
  5. اختار التالى.
  6. توفير معلومات عن المعلمات التالية:
    1. DatalakeUserName
    2. DatalakeUserPassword
    3. DatabaseName
    4. TableName
    5. DatabaseLFTagKey
    6. DatabaseLFTagValue
    7. TableLFTagKey
    8. TableLFTagValue
  7. اختار التالى.
  8. اختار التالي مرة أخرى.
  9. في مجلة التقيم القسم، قم بمراجعة القيم التي أدخلتها.
  10. أختار أقر بأن AWS CloudFormation قد تنشئ موارد IAM بأسماء مخصصة واختر تقدم.

في غضون دقائق قليلة، ستتغير حالة المكدس إلى CREATE_COMPLETE.

يمكنك الذهاب إلى علامة التبويب "المخرجات". من المكدس لرؤية كافة الموارد التي تم توفيرها. الموارد مسبوقة باسم المكدس الذي قدمته (لهذا المنشور، icebergdemo1).

قم بإنشاء جدول Iceberg باستخدام Lambda ومنح حق الوصول باستخدام Lake Formation

لإنشاء جدول Iceberg ومنح حق الوصول إليه، أكمل الخطوات التالية:

  1. انتقل إلى الموارد علامة التبويب الخاصة بمكدس CloudFormation Icebergdemo1 وابحث عن المعرف المنطقي المسمى LambdaFunctionIceberg.
  2. اختر الارتباط التشعبي للمعرف الفعلي المرتبط.

ستتم إعادة توجيهك إلى وظيفة Lambda icebergdemo1-Lambda-Create-Iceberg-and-Grant-access.

  1. على الاعداد علامة التبويب، اختر متغيرات البيئة في الجزء الأيمن.
  1. على رمز علامة التبويب، يمكنك فحص رمز الوظيفة.

تستخدم الدالة AWS SDK لـ Python (Boto3) واجهات برمجة التطبيقات لتوفير الموارد. ويتولى دور مسؤول بحيرة البيانات المتوفر لتنفيذ المهام التالية:

  • منحة DATA_LOCATION_ACCESS الوصول إلى دور مسؤول بحيرة البيانات في موقع بحيرة البيانات المسجل
  • إنشاء علامات تشكيل البحيرة (علامات LF)
  • أنشئ قاعدة بيانات في كتالوج بيانات AWS Glue باستخدام AWS Glue create_database API
  • تعيين علامات LF لقاعدة البيانات
  • امنح الوصول إلى DESCRIBE إلى قاعدة البيانات باستخدام علامات LF لمستخدم IAM لمستودع البيانات ودور AWS Glue ETL IAM
  • قم بإنشاء جدول Iceberg باستخدام AWS Glue اصنع جدول 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 إلى الجدول
  • قم بمنح الوصف والتحديد في جدول Iceberg LF-Tags لمستخدم IAM لبحيرة البيانات
  • منح الوصول ALL، وDESCRIBE، وSELECT، وINSERT، وDELETE، وALTER في جدول Iceberg LF-Tags إلى دور AWS Glue ETL IAM
  1. على اختبار علامة التبويب، اختر اختبار لتشغيل الوظيفة.

عند اكتمال الوظيفة، ستظهر لك الرسالة "جاري تنفيذ الوظيفة: نجح".

تساعدك Lake Formation على إدارة البيانات مركزيًا وتأمينها ومشاركتها عالميًا للتحليلات والتعلم الآلي. باستخدام Lake Formation، يمكنك إدارة التحكم الدقيق في الوصول لبيانات مستودع البيانات الخاصة بك على Amazon S3 وبيانات التعريف الخاصة به في كتالوج البيانات.

لإضافة موقع Amazon S3 كمخزن Iceberg في مستودع البيانات الخاص بك، تسجيل الموقع مع تكوين البحيرة. يمكنك بعد ذلك استخدام أذونات Lake Formation للتحكم الدقيق في الوصول إلى كائنات كتالوج البيانات التي تشير إلى هذا الموقع، وإلى البيانات الأساسية في الموقع.

قام مكدس CloudFormation بتسجيل موقع بحيرة البيانات.

أذونات موقع البيانات في Lake Formation، يمكّن مديري المدارس من إنشاء وتغيير موارد كتالوج البيانات التي تشير إلى مواقع Amazon S3 المسجلة والمحددة. تعمل أذونات موقع البيانات بالإضافة إلى Lake Formation أذونات البيانات لتأمين المعلومات في بحيرة البيانات الخاصة بك.

التحكم في الوصول المستند إلى علامة Lake Formation (LF-TBAC) هي استراتيجية ترخيص تحدد الأذونات بناءً على السمات. في تكوين البحيرة، تسمى هذه السمات علامات LF. يمكنك إرفاق علامات LF بموارد كتالوج البيانات ومبادئ Lake Formation وأعمدة الجدول. يمكنك تعيين وإلغاء الأذونات على موارد Lake Formation باستخدام علامات LF هذه. يسمح Lake Formation بالعمليات على تلك الموارد عندما تتطابق علامة المدير مع علامة المورد.

تحقق من جدول Iceberg من وحدة تحكم Lake Formation

للتحقق من جدول Iceberg، أكمل الخطوات التالية:

  1. في وحدة التحكم Lake Formation ، اختر قواعد بيانات في جزء التنقل.
  2. افتح صفحة التفاصيل الخاصة بـ icebergdb1.

يمكنك رؤية قاعدة البيانات المرتبطة LF-Tags.

  1. اختار طاولات الطعام في جزء التنقل.
  2. افتح صفحة التفاصيل الخاصة بـ ecomorders.

في مجلة تفاصيل الجدول القسم، يمكنك ملاحظة ما يلي:

  • تنسيق الجدول يظهر على شكل اباتشي فيض
  • إدارة الجدول يظهر على شكل تدار بواسطة كتالوج البيانات
  • الموقع الجغرافي يسرد موقع بحيرة البيانات لجدول Iceberg

في مجلة LF- العلامات القسم، يمكنك رؤية الجدول المرتبط LF-Tags.

في مجلة تفاصيل الجدول قسم ، توسيع خصائص الجدول المتقدمة لعرض ما يلي:

  • metadata_location يشير إلى موقع ملف البيانات التعريفية لجدول Iceberg
  • table_type يظهر على شكل ICEBERG

على مخطط علامة التبويب، يمكنك عرض الأعمدة المحددة في جدول Iceberg.

قم بدمج Iceberg مع AWS Glue Data Catalog وAmazon S3

يتتبع Iceberg ملفات البيانات الفردية في جدول بدلاً من الدلائل. عندما يكون هناك التزام صريح على الطاولة، يقوم Iceberg بإنشاء ملفات بيانات وإضافتها إلى الجدول. يحافظ Iceberg على حالة الجدول في ملفات البيانات التعريفية. يؤدي أي تغيير في حالة الجدول إلى إنشاء ملف بيانات تعريف جديد يحل محل البيانات التعريفية القديمة تلقائيًا. تقوم ملفات البيانات التعريفية بتتبع مخطط الجدول وتكوين التقسيم والخصائص الأخرى.

يتطلب Iceberg أن تكون أنظمة الملفات التي تدعم العمليات متوافقة مع مخازن الكائنات مثل Amazon S3.

يقوم Iceberg بإنشاء لقطات لمحتويات الجدول. كل لقطة هي مجموعة كاملة من ملفات البيانات في الجدول في وقت ما. يتم تخزين ملفات البيانات في اللقطات في واحد أو أكثر من ملفات البيان التي تحتوي على صف لكل ملف بيانات في الجدول وبيانات القسم الخاصة به ومقاييسه.

ويوضح الرسم البياني التالي هذا التسلسل الهرمي.

عندما تقوم بإنشاء جدول Iceberg، فإنه يقوم بإنشاء مجلد البيانات التعريفية أولاً وملف البيانات التعريفية في مجلد البيانات التعريفية. يتم إنشاء مجلد البيانات عند تحميل البيانات إلى جدول Iceberg.

محتويات ملف البيانات التعريفية Iceberg

يحتوي ملف البيانات التعريفية Iceberg على الكثير من المعلومات، بما في ذلك ما يلي:

  • نسخة التنسيق -نسخة من جدول جبل الجليد
  • الموقع الجغرافي - موقع Amazon S3 للجدول
  • المخططات - اسم ونوع البيانات لجميع الأعمدة في الجدول
  • مواصفات التقسيم - أعمدة مقسمة
  • أوامر الفرز - ترتيب الأعمدة
  • HAS – خصائص الجدول
  • معرف اللقطة الحالية - لقطة الحالية
  • الحكام - مراجع الجدول
  • لقطات - قائمة اللقطات، تحتوي كل منها على المعلومات التالية:
    • رقم التسلسل – العدد التسلسلي للقطات بالترتيب الزمني (أعلى رقم يمثل اللقطة الحالية، 1 لللقطة الأولى)
    • معرف اللقطة - معرف اللقطة
    • الطابع الزمني مللي ثانية - الطابع الزمني الذي تم فيه التقاط اللقطة
    • ملخص – ملخص التغييرات المرتكبة
    • قائمة البيان - قائمة البيانات؛ يبدأ اسم الملف هذا بـ snap-< snapshot-id >
  • معرف المخطط – الرقم التسلسلي للمخطط بالترتيب الزمني (أعلى رقم يمثل المخطط الحالي)
  • سجل لقطة – قائمة اللقطات بالترتيب الزمني
  • سجل البيانات الوصفية – قائمة ملفات البيانات الوصفية بالترتيب الزمني

يحتوي ملف البيانات التعريفية على كافة التغييرات التاريخية التي تم إجراؤها على بيانات الجدول ومخططه. قد تكون مراجعة محتويات ملف التعريف مباشرةً مهمة تستغرق وقتًا طويلاً. ولحسن الحظ، يمكنك الاستعلام عن البيانات الوصفية لجبل الجليد باستخدام أثينا.

إطار Iceberg في AWS Glue

يدعم AWS Glue 4.0 جداول Iceberg المسجلة لدى Lake Formation. في وظائف AWS Glue ETL، تحتاج إلى الكود التالي للقيام بذلك تمكين إطار جبل الجليد:

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

للوصول للقراءة/الكتابة إلى البيانات الأساسية، بالإضافة إلى أذونات Lake Formation، تم منح دور AWS Glue IAM لتشغيل مهام AWS Glue ETL تكوين البحيرة: GetDataAccess إذن الوصول. وبهذا الإذن، تمنح Lake Formation طلب الحصول على بيانات اعتماد مؤقتة للوصول إلى البيانات.

قامت مجموعة CloudFormation بتوفير وظائف AWS Glue ETL الأربع لك. يبدأ اسم كل مهمة باسم المكدس الخاص بك (icebergdemo1). أكمل الخطوات التالية لعرض الوظائف:

  1. قم بتسجيل الدخول كمسؤول إلى حساب AWS الخاص بك.
  2. في وحدة تحكم AWS Glue ، اختر وظائف ETL في جزء التنقل.
  3. ابحث عن وظائف مع icebergdemo1 باسم.

دمج البيانات من Dropzone في جدول Iceberg

بالنسبة لحالة الاستخدام الخاصة بنا، تقوم الشركة بإدخال بيانات طلبات التجارة الإلكترونية الخاصة بها يوميًا من موقعها الداخلي إلى موقع Amazon S3 Dropzone. قام مكدس CloudFormation بتحميل ثلاثة ملفات مع نماذج أوامر لمدة 3 أيام، كما هو موضح في الأشكال التالية. ترى البيانات في موقع Dropzone s3://icebergdemo1-s3bucketdropzone-kunftrcblhsk/data.

وظيفة AWS Glue ETL icebergdemo1-GlueETL1-merge سيتم تشغيله يوميًا لدمج البيانات في جدول Iceberg. يحتوي على المنطق التالي لإضافة أو تحديث البيانات على Iceberg:

  • قم بإنشاء Spark DataFrame من البيانات المدخلة:
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")

  • لطلب جديد، قم بإضافته إلى الجدول
  • إذا كان الجدول يحتوي على ترتيب مطابق، فقم بتحديث الحالة و 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:

  1. في وحدة تحكم AWS Glue ، اختر وظائف ETL في جزء التنقل.
  2. حدد وظيفة ETL icebergdemo1-GlueETL1-merge.
  3. على الإجراءات القائمة المنسدلة، اختر تشغيل مع المعلمات.
  4. على تشغيل المعلمات الصفحة ، انتقل إلى معلمات الوظيفة.
  5. بالنسبة --dropzone_path المعلمة، قم بتوفير موقع S3 لبيانات الإدخال (icebergdemo1-s3bucketdropzone-kunftrcblhsk/data/merge1).
  6. قم بتشغيل المهمة لإضافة كافة الأوامر: 1001، 1002، 1003، و1004.
  7. بالنسبة --dropzone_path parameter، قم بتغيير موقع S3 إلى icebergdemo1-s3bucketdropzone-kunftrcblhsk/data/merge2.
  8. قم بتشغيل المهمة مرة أخرى لإضافة الأوامر 2001 و2002، وتحديث الأوامر 1001، و1002، و1003.
  9. بالنسبة --dropzone_path المعلمة، قم بتغيير موقع S3 إلى icebergdemo1-s3bucketdropzone-kunftrcblhsk/data/merge3.
  10. قم بتشغيل المهمة مرة أخرى لإضافة الأمر 3001 وتحديث الأوامر 1001 و1003 و2001 و2002.

انتقل إلى مجلد البيانات بالجدول لرؤية ملفات البيانات التي كتبها Iceberg عندما قمت بدمج البيانات في الجدول باستخدام مهمة Glue ETL icebergdemo1-GlueETL1-merge.

الاستعلام عن Iceberg باستخدام Athena

قام مكدس CloudFormation بإنشاء مستخدم IAM Iceberguser1، الذي لديه حق الوصول للقراءة على جدول Iceberg باستخدام LF-Tags. للاستعلام عن Iceberg باستخدام Athena عبر هذا المستخدم، أكمل الخطوات التالية:

  1. سجل دخول iceberguser1 إلى وحدة تحكم إدارة AWS.
  2. في وحدة تحكم أثينا ، اختر مجموعات العمل في جزء التنقل.
  3. حدد موقع مجموعة العمل التي قام CloudFormation بتوفيرها (icebergdemo1-workgroup)
  4. التحقق من إصدار محرك أثينا 3.

يدعم إصدار محرك أثينا 3 تنسيقات ملفات جبل الجليد، بما في ذلك الباركيه، وORC، وأفرو.

  1. انتقل إلى محرر استعلام أثينا.
  2. اختر مجموعة العمل Icebergdemo1-workgroup من القائمة المنسدلة.
  3. في حالة قاعدة البيانات، اختر icebergdb1. سترى الجدول ecomorders.
  4. قم بتشغيل الاستعلام التالي لرؤية البيانات في جدول Iceberg:
    SELECT * FROM "icebergdb1"."ecomorders" ORDER BY ordernum ;

  5. قم بتشغيل الاستعلام التالي لرؤية أقسام الجدول الحالية:
    DESCRIBE icebergdb1.ecomorders ;

تصف مواصفات التقسيم كيفية تقسيم الجدول. في هذا المثال، لا توجد حقول مقسمة لأنك لم تحدد أي أقسام في الجدول.

تطور تقسيم جبل الجليد

قد تحتاج إلى تغيير بنية القسم الخاص بك؛ على سبيل المثال، بسبب تغيرات الاتجاه في أنماط الاستعلام الشائعة في التحليلات النهائية. يعد تغيير بنية الأقسام للجداول التقليدية عملية مهمة تتطلب نسخة كاملة من البيانات.

يجعل جبل الجليد هذا الأمر واضحًا ومباشرًا. عند تغيير بنية القسم على Iceberg، لا يتطلب الأمر إعادة كتابة ملفات البيانات. تظل البيانات القديمة المكتوبة باستخدام الأقسام السابقة دون تغيير. تتم كتابة البيانات الجديدة باستخدام المواصفات الجديدة في تخطيط جديد. يتم الاحتفاظ بالبيانات التعريفية لكل إصدار من إصدارات القسم بشكل منفصل.

لنقم بإضافة فئة حقل القسم إلى جدول Iceberg باستخدام مهمة AWS Glue ETL icebergdemo1-GlueETL2-partition-evolution:

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

على وحدة تحكم AWS Glue، قم بتشغيل مهمة ETL icebergdemo1-GlueETL2-partition-evolution. عند اكتمال المهمة، يمكنك الاستعلام عن الأقسام باستخدام Athena.

DESCRIBE icebergdb1.ecomorders ;

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

يمكنك رؤية فئة حقل القسم، لكن قيم القسم فارغة. لا توجد ملفات بيانات جديدة في مجلد البيانات، لأن تطور القسم هو عملية بيانات تعريف ولا يعيد كتابة ملفات البيانات. عند إضافة أو تحديث البيانات، سترى قيم القسم المقابلة التي تم ملؤها.

تطور مخطط جبل الجليد

يدعم Iceberg تطور الجدول في مكانه. أنت تستطيع تطوير مخطط الجدول تماما مثل SQL. تحديثات مخطط Iceberg عبارة عن تغييرات في البيانات التعريفية، لذلك لا يلزم إعادة كتابة ملفات البيانات لتنفيذ تطور المخطط.

لاستكشاف تطور مخطط Iceberg، قم بتشغيل مهمة ETL icebergdemo1-GlueETL3-schema-evolution عبر وحدة تحكم AWS Glue. تقوم المهمة بتشغيل عبارات SparkSQL التالية:

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، قم بتشغيل الاستعلام التالي:

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

يمكنك التحقق من تغييرات المخطط في جدول Iceberg:

  • تمت إضافة عمود جديد يسمى shipping_carrier
  • العمود shipping_id تمت إعادة تسمية إلى tracking_number
  • نوع بيانات العمود ordernum لقد تغير من int إلى bigint
    DESCRIBE icebergdb1.ecomorders;

التحديث الموضعي

البيانات في tracking_number يحتوي على شركة الشحن المرتبطة برقم التتبع. لنفترض أننا نريد تقسيم هذه البيانات من أجل الحفاظ على شركة الشحن في shipping_carrier الحقل ورقم التتبع في tracking_number الميدان.

على وحدة تحكم AWS Glue، قم بتشغيل مهمة ETL icebergdemo1-GlueETL4-update-table. تقوم الوظيفة بتشغيل عبارة SparkSQL التالية لتحديث الجدول:

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

الاستعلام عن جدول Iceberg للتحقق من البيانات المحدثة tracking_number و shipping_carrier.

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

الآن بعد أن تم تحديث البيانات في الجدول، يجب أن تشاهد قيم القسم المملوءة للفئة:

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

تنظيف

لتجنب تكبد رسوم مستقبلية، قم بتنظيف الموارد التي قمت بإنشائها:

  1. في وحدة تحكم Lambda، افتح صفحة التفاصيل الخاصة بالوظيفة icebergdemo1-Lambda-Create-Iceberg-and-Grant-access.
  2. في مجلة متغيرات البيئة القسم، اختر المفتاح Task_To_Perform وتحديث القيمة إلى CLEANUP.
  3. قم بتشغيل الوظيفة، التي تقوم بإسقاط قاعدة البيانات والجدول وعلامات LF المرتبطة بهما.
  4. في وحدة تحكم AWS CloudFormation، احذف المكدس Icebergdemo1.

وفي الختام

في هذا المنشور، قمت بإنشاء جدول Iceberg باستخدام AWS Glue API واستخدمت Lake Formation للتحكم في الوصول إلى جدول Iceberg في مستودع بيانات المعاملات. باستخدام مهام AWS Glue ETL، يمكنك دمج البيانات في جدول Iceberg، وتنفيذ تطور المخطط وتطوير الأقسام دون إعادة كتابة جدول Iceberg أو إعادة إنشائه. مع Athena، قمت بالاستعلام عن بيانات Iceberg والبيانات الوصفية.

استنادًا إلى المفاهيم والعروض التوضيحية الواردة في هذا المنشور، يمكنك الآن إنشاء مستودع بيانات للمعاملات في مؤسسة باستخدام Iceberg وAWS Glue وLake Formation وAmazon S3.


عن المؤلف

ساتيا أديمولا هو مهندس بيانات أول في AWS ومقرها في بوسطن. بفضل أكثر من عقدين من الخبرة في مجال البيانات والتحليلات، يساعد ساتيا المؤسسات على استخلاص رؤى الأعمال من بياناتها على نطاق واسع.

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة