بدء الاستخدام: استيعاب بيانات إضافية وإدراجها

ترشدك مقالة البدء هذه إلى استخدام دفتر ملاحظات Azure Databricks لاستيعاب ملف CSV يحتوي على بيانات إضافية لاسم الطفل في وحدة تخزين كتالوج Unity ثم استيراد بيانات اسم الطفل الجديد إلى جدول موجود باستخدام Python وSc scala وR.

هام

تعتمد مقالة بدء الاستخدام هذه على بدء الاستخدام: استيراد بيانات CSV وتصورها من دفتر ملاحظات. يجب إكمال الخطوات الواردة في هذه المقالة لإكمال هذه المقالة. للحصول على دفتر الملاحظات الكامل لمقالة بدء الاستخدام هذه، راجع استيراد دفاتر ملاحظات البيانات وتصورها.

المتطلبات

لإكمال المهام في هذه المقالة، يجب أن تفي بالمتطلبات التالية:

  • يجب تمكين كتالوج Unity لمساحة العمل الخاصة بك. للحصول على معلومات حول بدء استخدام كتالوج Unity، راجع إعداد كتالوج Unity وإدارته.
  • يجب أن يكون لديك الامتياز على WRITE VOLUME وحدة تخزين، USE SCHEMA والامتياز على المخطط الأصل، والامتياز USE CATALOG على الكتالوج الأصل.
  • يجب أن يكون لديك إذن لاستخدام مورد حساب موجود أو إنشاء مورد حساب جديد. راجع بدء الاستخدام: إعداد الحساب ومساحة العمل أو راجع مسؤول Databricks.

تلميح

للحصول على دفتر ملاحظات مكتمل لهذه المقالة، راجع استيعاب دفاتر ملاحظات بيانات إضافية.

الخطوة 1: إنشاء دفتر ملاحظات جديد

لإنشاء دفتر ملاحظات في مساحة العمل، انقر فوق أيقونة جديدة جديد في الشريط الجانبي، ثم انقر فوق دفتر الملاحظات. يتم فتح دفتر ملاحظات فارغ في مساحة العمل.

لمعرفة المزيد حول إنشاء دفاتر الملاحظات وإدارتها، راجع إدارة دفاتر الملاحظات.

الخطوة 2: تحديد المتغيرات

في هذه الخطوة، يمكنك تعريف المتغيرات لاستخدامها في مثال دفتر الملاحظات الذي تقوم بإنشائه في هذه المقالة.

  1. انسخ التعليمات البرمجية التالية والصقها في خلية دفتر الملاحظات الفارغة الجديدة. استبدل <catalog-name>و <schema-name>و <volume-name> بأسماء الكتالوج والمخطط ووحدات التخزين لوحدة تخزين كتالوج Unity. استبدل table_name القيمة اختياريا باسم جدول من اختيارك. ستحفظ بيانات اسم الطفل في هذا الجدول لاحقا في هذه المقالة.

  2. اضغط Shift+Enter لتشغيل الخلية وإنشاء خلية فارغة جديدة.

    Python

    catalog = "<catalog_name>"
    schema = "<schema_name>"
    volume = "<volume_name>"
    file_name = "new_baby_names.csv"
    table_name = "baby_names"
    path_volume = "/Volumes/" + catalog + "/" + schema + "/" + volume
    path_table = catalog + "." + schema
    print(path_table) # Show the complete path
    print(path_volume) # Show the complete path
    

    Scala

    val catalog = "<catalog_name>"
    val schema = "<schema_name>"
    val volume = "<volume_name>"
    val fileName = "new_baby_names.csv"
    val tableName = "baby_names"
    val pathVolume = s"/Volumes/${catalog}/${schema}/${volume}"
    val pathTable = s"${catalog}.${schema}"
    print(pathVolume) // Show the complete path
    print(pathTable) // Show the complete path
    

    R

    catalog <- "<catalog_name>"
    schema <- "<schema_name>"
    volume <- "<volume_name>"
    file_name <- "new_baby_names.csv"
    table_name <- "baby_names"
    path_volume <- paste0("/Volumes/", catalog, "/", schema, "/", volume, sep = "")
    path_table <- paste0(catalog, ".", schema, sep = "")
    print(path_volume) # Show the complete path
    print(path_table) # Show the complete path
    

الخطوة 3: إضافة ملف CSV جديد من البيانات إلى وحدة تخزين كتالوج Unity

تنشئ هذه الخطوة DataFrame باسم df طفل جديد ل 2022 ثم تحفظ هذه البيانات في ملف CSV جديد في وحدة تخزين كتالوج Unity.

إشعار

تحاكي هذه الخطوة إضافة بيانات سنوية جديدة إلى البيانات الموجودة التي تم تحميلها للسنوات السابقة. في بيئة الإنتاج الخاصة بك، سيتم تخزين هذه البيانات المتزايدة في التخزين السحابي.

  1. انسخ التعليمات البرمجية التالية والصقها في خلية دفتر الملاحظات الفارغة الجديدة. تنشئ هذه التعليمة البرمجية DataFrame مع بيانات اسم الطفل الإضافية، ثم تكتب تلك البيانات إلى ملف CSV في وحدة تخزين كتالوج Unity.

    Python

    data = [[2022, "CARL", "Albany", "M", 42]]
    
    df = spark.createDataFrame(data, schema="Year int, First_Name STRING, County STRING, Sex STRING, Count int")
    # display(df)
    (df.coalesce(1)
        .write
        .option("header", "true")
        .mode("overwrite")
        .csv(f"{path_volume}/{file_name}"))
    

    Scala

    val data = Seq((2022, "CARL", "Albany", "M", 42))
    val columns = Seq("Year", "First_Name", "County", "Sex", "Count")
    
    val df = data.toDF(columns: _*)
    
    // display(df)
    df.coalesce(1)
        .write
        .option("header", "true")
        .mode("overwrite")
        .csv(f"{pathVolume}/{fileName}")
    

    R

    # Load the SparkR package that is already preinstalled on the cluster.
    library(SparkR)
    
    data <- data.frame(Year = 2022,
        First_Name = "CARL",
        County = "Albany",
        Sex = "M",
        Count = 42)
    
    df <- createDataFrame(data)
    # display(df)
    write.df(df, path = paste0(path_volume, "/", file_name),
        source = "csv",
        mode = "overwrite",
        header = "true")
    
  2. اضغط Shift+Enter لتشغيل الخلية ثم انتقل إلى الخلية التالية.

الخطوة 4: تحميل البيانات إلى DataFrame من ملف CSV

إشعار

تحاكي هذه الخطوة تحميل البيانات من التخزين السحابي.

  1. انسخ التعليمات البرمجية التالية والصقها في خلية دفتر ملاحظات فارغة. تحمل هذه التعليمة البرمجية بيانات أسماء الأطفال الجديدة في DataFrame جديد من ملف CSV.

    Python

    df1 = spark.read.csv(f"{path_volume}/{file_name}",
        header=True,
        inferSchema=True,
        sep=",")
    display(df1)
    

    Scala

    val df1 = spark.read
        .option("header", "true")
        .option("inferSchema", "true")
        .option("delimiter", ",")
        .csv(s"$pathVolume/$fileName")
    display(df1)
    

    R

    df1 <- read.df(paste0(path_volume, "/", file_name),
        source = "csv",
        header = TRUE,
        inferSchema = TRUE)
    display(df1)
    
  2. اضغط Shift+Enter لتشغيل الخلية ثم انتقل إلى الخلية التالية.

الخطوة 5: إدراج في جدول موجود

  1. انسخ التعليمات البرمجية التالية والصقها في خلية دفتر ملاحظات فارغة. تلحق هذه التعليمة البرمجية بيانات أسماء الأطفال الجديدة من DataFrame بالجدول الموجود.

    Python

    df.write.mode("append").insertInto(f"{path_table}.{table_name}")
    display(spark.sql(f"SELECT * FROM {path_table}.{table_name} WHERE Year = 2022"))
    

    Scala

    df1.write.mode("append").insertInto(s"${pathTable}.${tableName}")
    display(spark.sql(s"SELECT * FROM ${pathTable}.${tableName} WHERE Year = 2022"))
    

    R

    # The write.df function in R, as provided by the SparkR package, does not directly support writing to Unity Catalog.
    # In this example, you write the DataFrame into a temporary view and then use the SQL command to insert data from the temporary view to the Unity Catalog table
    createOrReplaceTempView(df1, "temp_view")
    sql(paste0("INSERT INTO ", path_table, ".", table_name, " SELECT * FROM temp_view"))
    display(sql(paste0("SELECT * FROM ", path_table, ".", table_name, " WHERE Year = 2022")))
    
  2. اضغط Ctrl+Enter لتشغيل الخلية.

استيعاب دفاتر ملاحظات بيانات إضافية

استخدم أحد دفاتر الملاحظات التالية لتنفيذ الخطوات الواردة في هذه المقالة. استبدل <catalog-name>و <schema-name>و <volume-name> بأسماء الكتالوج والمخطط ووحدات التخزين لوحدة تخزين كتالوج Unity. استبدل table_name القيمة اختياريا باسم جدول من اختيارك.

Python

استيعاب بيانات إضافية وإدراجها باستخدام Python

الحصول على دفتر الملاحظات

Scala

استيعاب بيانات إضافية وإدراجها باستخدام Scala

الحصول على دفتر الملاحظات

R

استيعاب بيانات إضافية وإدراجها باستخدام R

الحصول على دفتر الملاحظات

الخطوات التالية

للتعرف على تنقية البيانات وتحسينها، راجع البدء: تحسين البيانات وتطهيرها.

الموارد الإضافية