Tüm Ürünler
Search
Belge Merkezi

E-MapReduce:SparkSQL development

Son Güncelleme:Oct 05, 2026

EMR Serverless Spark içindeki yerleşik SQL düzenleyicisini kullanarak Spark SQL işlerini etkileşimli olarak yazın ve çalıştırın. Bir iş çalıştıktan sonra yürütme durumunu, kaynak kullanımını ve günlükleri incelemek için Spark UI'a erişin.

Ön koşullar

Başlamadan önce aşağıdakilere sahip olduğunuzdan emin olun:

Spark SQL işi oluşturma

Önemli

DLF Katalog parametreleri SparkSession başlatma sırasında yüklenir. Catalog ile ilgili parametrelerin (örneğin spark.sql.catalog.dlf.warehouse) PySpark kodu içinde spark.conf.set() kullanılarak dinamik şekilde ayarlanması etkili olmaz. Bu parametreleri doğru yapılandırmak için bir iş gönderirken bunları başlangıç parametresi olarak belirtin. Örneğin, EMR Serverless Spark konsolunun Configuration bölümüne veya CLI'daki --conf parametresine spark.sql.catalog.dlf.warehouse=oss://your-bucket/warehouse-path ekleyin.

  1. Geliştirme sayfasına gidin.

    1. EMR konsolu üzerinde oturum açın.

    2. Sol gezinme bölmesinde EMR Serverless \> Spark seçeneğini seçin.

    3. Spark sayfasında hedef çalışma alanının adını tıklayın.

    4. EMR Serverless Spark sayfasında sol gezinme bölmesinden Development seçeneğini tıklayın.

  2. Bir iş oluşturun.

    1. Development sekmesinde image simgesini tıklayın.

    2. İletişim kutusunda bir Name girin, Türü SparkSQL olarak ayarlayın ve OK seçeneğini tıklayın.

    3. Sağ üst köşede bir data catalog, veritabanı ve çalışan bir SQL oturum örneği seçin. Yeni bir SQL oturum örneği oluşturmak için açılır listeden Connect to SQL Session seçeneğini belirleyin. Ayrıntılar için bkz. SQL oturumlarını yönetme.

    4. Düzenleyiciye SQL deyimlerini girin.

      Örnek 1: Temel SQL işlemleri

      Veritabanı oluşturun, bu veritabanına geçiş yapın, tablo oluşturun, satır ekleyin ve verileri sorgulayın.

      create DATABASE test_sql;
      
      use test_sql;
      
      CREATE TABLE IF NOT EXISTS my_table (id INT, name STRING);
      
      INSERT INTO my_table VALUES(1, 'Alice'),(2, 'Bob');
      
      SELECT * FROM my_table WHERE id > 1;

      Sonuçlar düzenleyicinin altındaki çıkış panelinde görüntülenir.


      #


      id


      name


      1


      2


      Bob

      Örnek 2: CSV tabanlı harici tablo

      Object Storage Service (OSS) içindeki bir CSV dosyasıyla desteklenen harici bir tablo oluşturun ve analitik sorgusu çalıştırın. oss://<bucketname>/user/ ifadesini gerçek paket yolunuzla değiştirin.

      1. Harici tabloyu oluşturun. Aşağıdaki alanlara sahip orders adlı bir tablo tanımlayın:

        • order_id: Sipariş kimliği.

        • order_date: Sipariş zaman damgası, örneğin '2025-07-01 10:00:00'.

        • order_category: Ürün kategorisi, örneğin 'Electronics' veya 'Apparel'.

        • order_revenue: Sipariş tutarı.

        CREATE TABLE orders (
          order_id       STRING,   -- Order ID
          order_date     STRING,   -- Order timestamp
          order_category STRING,   -- Product category
          order_revenue  DOUBLE    -- Order amount
        )
        USING CSV
        OPTIONS (
          path   'oss://<bucketname>/user/',
          header 'true'
        );
      2. Test verilerini ekleyin.

        INSERT OVERWRITE TABLE orders VALUES
          ('o1',  '2025-07-01 10:00:00', 'Electronics', 5999.0),
          ('o2',  '2025-07-02 11:30:00', 'Apparel',     299.0),
          ('o3',  '2025-07-03 14:45:00', 'Electronics', 899.0),
          ('o4',  '2025-07-04 09:15:00', 'Home Goods',  99.0),
          ('o5',  '2025-07-05 16:20:00', 'Electronics', 1999.0),
          ('o6',  '2025-07-06 08:00:00', 'Apparel',     199.0),
          ('o7',  '2025-07-07 12:10:00', 'Electronics', 799.0),
          ('o8',  '2025-07-08 18:30:00', 'Home Goods',  59.0),
          ('o9',  '2025-07-09 20:00:00', 'Electronics', 399.0),
          ('o10', '2025-07-10 07:45:00', 'Apparel',     599.0),
          ('o11', '2025-07-11 09:00:00', 'Electronics', 1299.0),
          ('o12', '2025-07-12 13:20:00', 'Home Goods',  159.0),
          ('o13', '2025-07-13 17:15:00', 'Apparel',     499.0),
          ('o14', '2025-07-14 21:30:00', 'Electronics', 999.0),
          ('o15', '2025-07-15 06:10:00', 'Home Goods',  299.0);
      3. Analitik sorgusu çalıştırın. Aşağıdaki sorgu, 15 günlük dönem için kategori bazında satış performansını döndürür; toplam geliri 1.000'in üzerinde olan kategoriler için sipariş sayısı, toplam GMV (Brüt Satış Değeri), ortalama sipariş tutarı ve en son sipariş zamanı bilgilerini verir. Sonuçlar GMV'ye göre azalan, kategoriye göre artan sıralanır.

        SELECT
            order_category,
            COUNT(order_id)    AS order_count,
            SUM(order_revenue) AS gmv,
            AVG(order_revenue) AS avg_order_amount,
            MAX(order_date)    AS latest_order_date
        FROM orders
        WHERE
            CAST(order_date AS TIMESTAMP) BETWEEN '2025-07-01' AND '2025-07-15'
        GROUP BY order_category
        HAVING SUM(order_revenue) > 1000
        ORDER BY gmv DESC, order_category ASC;

      Örnek 3: Hive Parquet tablosu oluşturma (DLF Format Table)

      EMR Serverless Spark varsayılan olarak Apache Paimon'u tablo formatı olarak kullanır. Bunun yerine Hive Parquet tablosu oluşturmak için iş başlatma parametrelerindeki varsayılan ayarları geçersiz kılmanız gerekir.

      Başlatma parametreleri

      Hive Parquet tablosu oluşturmadan önce, Paimon kataloğunun tablo oluşturmayı engellemesini önlemek amacıyla aşağıdaki Spark yapılandırma parametrelerini ekleyin:

      spark.sql.catalog.spark_catalog=org.apache.spark.sql.hive.HiveCatalog
      spark.sql.defaultFileFormat=parquet

      Bu parametreleri EMR Serverless Spark konsolunun Configuration bölümüne veya CLI'daki --conf parametresiyle ekleyebilirsiniz.

      SQL yöntemi

      Hive Parquet tablosu oluşturmak için CREATE TABLE ... USING PARQUET sözdizimini kullanın. STORED AS PARQUET kullanmayın.

      CREATE TABLE my_parquet_table (
        id INT,
        name STRING,
        created_at TIMESTAMP
      ) USING PARQUET;

      DataFrame API yöntemi

      Verileri Hive Parquet tablosu olarak yazmak için df.write.format("parquet").saveAsTable(...) kullanın.

      df.write.format("parquet").saveAsTable("my_parquet_table")
      Not

      Çalışma alanınız bir DLF Kataloğu ile ilişkilendirilmişse, meta veri kataloğuyla tutarlılığı sağlamak için tabloları Spark oturumları veya SQL deyimleriyle oluşturmanızı öneririz.

    5. (İsteğe bağlı) Sürümleri karşılaştırmak için sağ taraftaki Version Information sekmesini tıklayın. Düzenleyici, sürümler arasındaki SQL kodu farklılıklarını vurgular.

  3. İşi çalıştırın ve yayınlayın.

    1. Run seçeneğini tıklayın. Sonuçlar Execution Results sekmesinde görünür. Bir hata oluşursa Execution Issues sekmesini kontrol edin. Sağ taraftaki çalıştırma geçmişi paneli son üç güne ait kayıtları gösterir.

    2. İşin doğru çalıştığını onayladıktan sonra sağ üst köşede Publish seçeneğini tıklayın.

    3. Publish iletişim kutusunda sürüm notlarını girin ve OK seçeneğini tıklayın.

Spark UI'a erişme

Spark UI, görev yürütme durumunu, kaynak kullanımını ve günlük bilgilerini gösterir; bu da Spark işlerinizi analiz etmek ve optimize etmek için kullanışlıdır.

Yürütme sonuçlarından erişim

Bu yöntem için aşağıdaki motor sürümleri veya daha yenisi gereklidir: esr-4.2.0 (esr-4.x), esr-3.2.0 (esr-3.x) veya esr-2.6.0 (esr-2.x).

SQL deyimi çalıştıktan sonra Execution Results sekmesinin alt kısmında Spark UI seçeneğini tıklayın.

Oturum örneğinden erişim

SQL deyimi çalıştıktan sonra oturum örneğini bulun ve image \> Spark UI seçeneğini belirleyin.

Klavye kısayolları


İşlev


Windows


Mac


Açıklama


Geçerli betiği çalıştır


Ctrl + Enter


Control + Enter


Tüm SQL deyimlerini veya yalnızca vurgulanan seçimi çalıştırır. Run tıklamasıyla aynı işlevi görür.


SQL'i biçimlendir


Ctrl + P


Control + P


SQL yapısını biçimlendirir: girintileri, satır sonlarını ve anahtar sözcük büyük/küçük harf kullanımını standartlaştırır.


Metin bul


Ctrl + F


Control + F


Geçerli betikte anahtar sözcükleri arar.


Görevi kaydet


Ctrl + S


Control + S


Veri kaybını önlemek için mevcut yayımlanmamış işi kaydeder.

Sonraki adımlar

Bir iş akışı oluşturarak işin periyodik olarak çalışmasını zamanlayın. Bkz. İş akışı oluşturma. Tam bir zamanlama örneği için bkz. Spark SQL geliştirmeye hızlı başlangıç.

SSS

Sorgu sonuçları için 10.000 satırlık indirme limiti aşılabiliyor mu?

Hayır. EMR Serverless Spark veri geliştirmede sorgu sonucu indirme işlemi sabit bir platform limitiyle sınırlandırılmıştır. En fazla 10.000 satır indirilebilir ve toplam dosya boyutu 10 MB'yi aşamaz. Bu limit yapılandırma yoluyla değiştirilemez.

Daha büyük veri kümelerini dışa aktarmak için aşağıdaki yöntemlerden birini kullanın:

  • spark-submit kullanarak bir iş gönderin ve sonuçları Object Storage Service (OSS) veya Hadoop Distributed File System (HDFS) üzerine yazın.

  • Verileri dışa aktarmak için DataWorks'te çevrimdışı bir senkronizasyon görevi kullanın.

EMR Serverless Spark, Spark History için genel API'ler sunuyor mu?

Evet. EMR Serverless Spark genel API'ler sağlar. Kullanılabilir tüm API işlemlerinin tam listesi için bkz. API'ye genel bakış.