Spark on MaxCompute, işleri hem yerel hem de küme modunda çalıştırmayı destekler. DataWorks'te, Spark on MaxCompute çevrimdışı işlerini küme modunda çalıştırarak bunları diğer düğüm türleriyle entegre edip zamanlayabilirsiniz. Bu konuda, DataWorks kullanarak Spark on MaxCompute işlerinin nasıl yapılandırılacağı ve zamanlanacağı açıklanmaktadır.
Genel bakış
Spark on MaxCompute, açık kaynaklı Spark ile uyumlu olan ve MaxCompute tarafından sağlanan bir hesaplama hizmetidir. Birleşik bir hesaplama kaynağı ve izin sistemi üzerine kurulu bir Spark hesaplama çerçevesi sunar. Bu sayede, çeşitli veri işleme ve analiz ihtiyaçlarınız için tanıdık geliştirme iş akışlarını kullanarak Spark işlerini gönderebilir ve çalıştırabilirsiniz. DataWorks'te, Spark on MaxCompute işlerini zamanlamak, çalıştırmak ve diğer işlerle entegre etmek için MaxCompute Spark düğümünü kullanabilirsiniz.
Spark on MaxCompute; Java, Scala ve Python dillerinde geliştirmeyi destekler ve işleri yerel veya küme modunda çalıştırır. DataWorks'te çevrimdışı bir Spark on MaxCompute işi çalıştırdığınızda bu iş küme modunda yürütülür. Spark on MaxCompute çalışma modları hakkında daha fazla bilgi için Çalışma modları konusuna bakın.
İzin gereksinimleri
İşleri geliştirmek için RAM kullanıcılarının ilgili çalışma alanına eklenmesi ve Development veya Workspace Administrator rolünün atanması gerekir. Workspace Administrator rolü geniş kapsamlı izinler içerdiğinden dikkatli bir şekilde verilmelidir. Bir üyeyi çalışma alanına ekleme hakkında daha fazla bilgi için Çalışma alanı üyeleri ekleme konusuna bakın.
Alibaba Cloud hesabı kullanıyorsanız bu adımı atlayabilirsiniz.
Sınırlamalar
Spark 3.x kullanan bir MaxCompute Spark düğümü gönderirken hata alırsanız sunucusuz kaynak grubu satın almanız ve kullanmanız gerekir. Daha fazla bilgi için Sunucusuz kaynak grubu kullanma konusuna bakın.
Başlamadan önce
MaxCompute Spark düğümü, Java/Scala ve Python kullanarak Spark on MaxCompute çevrimdışı işlerini çalıştırmayı destekler. Geliştirme adımları ve yapılandırma arayüzü her dil için farklılık gösterir. İş gereksinimlerinize göre bir dil seçin.
Java/Scala
MaxCompute Spark düğümünde Java veya Scala kodunu çalıştırmadan önce Spark on MaxCompute iş kodunu yerel olarak geliştirmeniz ve bunu DataWorks'e MaxCompute kaynağı olarak yüklemeniz gerekir. Aşağıdaki adımları izleyin:
-
Geliştirme ortamını hazırlayın.
İşletim sisteminize göre Spark on MaxCompute işlerini çalıştırmak için bir geliştirme ortamı hazırlayın. Daha fazla bilgi için Linux geliştirme ortamı ayarlama ve Windows geliştirme ortamı ayarlama konularına bakın.
-
Java/Scala kodunu geliştirin.
Kodu MaxCompute Spark düğümünde çalıştırmadan önce Spark on MaxCompute kodunuzu yerel ortamınızda veya mevcut bir ortamda geliştirin. Spark on MaxCompute tarafından sağlanan örnek proje şablonunu kullanmanızı öneririz.
-
Kodu paketleyin ve DataWorks'e yükleyin.
Geliştirme tamamlandıktan sonra kodunuzu paketleyin ve MaxCompute kaynağı olarak DataWorks'e yükleyin. Daha fazla bilgi için Kaynak Yönetimi konusuna bakın.
Varsayılan ortamla Python
DataWorks'te kodu doğrudan bir Python kaynağına yazarak PySpark işleri geliştirebilirsiniz. Ardından kodu bir MaxCompute Spark düğümü kullanarak gönderebilir ve çalıştırabilirsiniz. Geliştirme örnekleri için PySpark geliştirme örnekleri konusuna bakın.
Varsayılan ortam işinizin bağımlılık gereksinimlerini karşılamıyorsa özel bir Python ortamı hazırlamak için Python (using a custom environment) bölümüne bakın. Alternatif olarak Python kaynakları için daha iyi destek sunan PyODPS 2 veya PyODPS 3 düğümü kullanabilirsiniz.
Özel ortamla Python
Varsayılan Python ortamı iş gereksinimlerinizi karşılamıyorsa Spark on MaxCompute işinizi çalıştırmak için özel bir Python ortamı kullanmak üzere aşağıdaki adımları izleyin.
-
Yerel ortamda bir Python ortamı hazırlayın.
Gerekli Python ortamını yapılandırmak için PySpark Python sürümleri ve bağımlılık desteği kaynağına bakın.
-
Ortamı paketleyin ve DataWorks'e yükleyin.
Python ortamını .zip paketi halinde sıkıştırın ve MaxCompute kaynağı olarak DataWorks'e yükleyin. Bu paket Spark on MaxCompute işinizin yürütme ortamı haline gelir.
Parametreler
DataWorks, Spark on MaxCompute çevrimdışı işlerini Küme modunda çalıştırır. Küme modunda özel bir program giriş noktası main belirtmeniz gerekir. İlgili Spark işi, main işlevi Success veya Fail durumuyla sonlandığında tamamlanır. Ayrıca spark-defaults.conf dosyasındaki yapılandırmaların tek tek MaxCompute Spark düğümü yapılandırmalarına eklenmesi gerekir. Örneğin executor sayısı, bellek boyutu ve spark.hadoop.odps.runtime.end.point yapılandırması.
spark-defaults.conf dosyasını yüklemeniz gerekmez. Bunun yerine spark-defaults.conf dosyasındaki yapılandırmaları tek tek MaxCompute Spark düğümünün yapılandırma öğelerine eklemeniz gerekir.
Java/Scala
|
Parametre |
Açıklama |
Spark-submit komutu |
|
Spark Version |
Spark sürümü. Geçerli değerler: Spark 1.x, Spark 2.x ve Spark 3.x. Not
Spark 3.x sürümünü kullanan bir MaxCompute Spark düğümü gönderirken hata alırsanız sunucusuz kaynak grubu satın alın ve kullanın. Daha fazla bilgi için Sunucusuz kaynak grubu kullanma konusuna bakın. |
— |
|
Language |
Programlama dili. Spark on MaxCompute işinizi geliştirdiğiniz dile göre Java/Scala veya Python seçeneğini belirleyin. |
— |
|
Main JAR Resource |
İş için ana JAR kaynak dosyasını belirtir. Kaynak dosyasının DataWorks'e yüklenmiş ve commit edilmiş olması gerekir. Daha fazla bilgi için Kaynak Yönetimi konusuna bakın. |
|
|
Configuration Item |
İşi göndermek için yapılandırma öğelerini belirtir. Aşağıdaki hususlara dikkat edin:
|
|
|
Main Class |
Ana sınıf adını yapılandırın. Bu parametre geliştirme dili |
|
|
Parameter |
İhtiyaç duyduğunuz parametreleri ekleyebilir ve birden fazla parametreyi boşlukla ayırabilirsiniz. DataWorks zamanlama parametrelerini destekler. Parameter biçimi Zamanlama parametre değerleri için desteklenen biçimler hakkında bilgi almak üzere Zamanlama parametrelerinin kaynakları ve ifadeleri konusuna bakın. |
|
|
JAR Resources |
Bu özellik yalnızca programlama dili Kaynak dosyalarının DataWorks'e yüklenmiş ve commit edilmiş olması gerekir. Daha fazla bilgi için Kaynak Yönetimi konusuna bakın. |
Kaynak komutu:
|
|
File Resources |
İş için dosya kaynaklarını belirtir. |
|
|
Archive Resources |
İş için arşiv kaynaklarını belirtir. Yalnızca .zip arşivleri desteklenir. |
|
Python
|
Parametre |
Açıklama |
Spark-submit komutu |
|
Spark Version |
Spark sürümü. Geçerli değerler: Spark 1.x, Spark 2.x ve Spark 3.x. Not
Spark 3.x sürümünü kullanan bir MaxCompute Spark düğümü gönderirken hata alırsanız sunucusuz kaynak grubu satın alın ve kullanın. Daha fazla bilgi için Sunucusuz kaynak grubu kullanma konusuna bakın. |
— |
|
Language |
Programlama dili. Spark on MaxCompute işinizi geliştirdiğiniz dile göre Python seçeneğini belirleyin. |
— |
|
Main Python Resource |
İş için ana Python kaynak dosyasını belirtir. Kaynak dosyasının DataWorks'e yüklenmiş ve commit edilmiş olması gerekir. Daha fazla bilgi için Kaynak Yönetimi konusuna bakın. |
|
|
Configuration Item |
İşi göndermek için yapılandırma öğelerini belirtir. Aşağıdaki hususlara dikkat edin:
|
|
|
Parameter |
İhtiyaç duyduğunuz parametreleri boşlukla ayırarak ekleyebilirsiniz. DataWorks zamanlama parametrelerini destekler; bu parametrelerin Parameter alanında Zamanlama parametre değerleri için desteklenen biçimler hakkında bilgi almak üzere Zamanlama parametrelerinin kaynakları ve ifadeleri konusuna bakın. |
|
|
Python Resources |
Bu seçenek yalnızca geliştirme dili Kaynak dosyalarının DataWorks'e yüklenmiş ve commit edilmiş olması gerekir. Daha fazla bilgi için Kaynak Yönetimi konusuna bakın. |
|
|
File Resources |
İş için dosya kaynaklarını belirtir. |
|
|
Archive Resources |
İş için arşiv kaynaklarını belirtir. |
|
Yordam
-
Kaynak oluşturun.
-
Data Studio sayfasının sol gezinme bölmesinde Resource Management seçeneğini bulun ve Create seçeneğine tıklayın. MaxCompute Spark türünde bir Python kaynağı oluşturun ve adını
spark_is_number.pyolarak belirleyin. Daha fazla bilgi için Kaynak Yönetimi konusuna bakın. Kod aşağıdaki gibidir:# -*- coding: utf-8 -*- import sys from pyspark.sql import SparkSession try: # for python 2 reload(sys) sys.setdefaultencoding('utf8') except: # python 3 not needed pass if __name__ == '__main__': spark = SparkSession.builder\ .appName("spark sql")\ .config("spark.sql.broadcastTimeout", 20 * 60)\ .config("spark.sql.crossJoin.enabled", True)\ .config("odps.exec.dynamic.partition.mode", "nonstrict")\ .config("spark.sql.catalogImplementation", "odps")\ .getOrCreate() def is_number(s): try: float(s) return True except ValueError: pass try: import unicodedata unicodedata.numeric(s) return True except (TypeError, ValueError): pass return False print(is_number('foo')) print(is_number('1')) print(is_number('1.3')) print(is_number('-1.37')) print(is_number('1e3')) Kaynağı kaydedin.
-
Oluşturulan MaxCompute Spark düğümünde düğüm parametrelerini ve zamanlama parametrelerini yapılandırın. Daha fazla bilgi için Parametreler konusuna bakın.
İşi zamanlanmış olarak çalıştırmak için iş gereksinimlerinize göre zamanlama özelliklerini yapılandırın. Daha fazla bilgi için Düğüm zamanlama yapılandırması konusuna bakın.
Düğüm işini yapılandırdıktan sonra düğümü dağıtın. Daha fazla bilgi için Düğümleri/iş akışlarını dağıtma konusuna bakın.
-
İş dağıtıldıktan sonra periyodik işin çalışma durumunu görüntülemek için Operation Center'a gidebilirsiniz. Daha fazla bilgi için Operation Center'a başlarken konusuna bakın.
NotMaxCompute Spark düğümlerinin Data Studio'da bir çalıştırma giriş noktası yoktur. Spark işlerini geliştirme ortamında Operation Center üzerinden çalıştırmanız gerekir.
Veri geri doldurma örneği başarıyla çalıştıktan sonra sonucu görüntülemek için örnek çalıştırma günlüğündeki izleme URL'sini açın.
İlgili konular
-
Diğer kullanım durumları için Spark on MaxCompute işleri geliştirme hakkında daha fazla bilgi almak üzere aşağıdaki konulara bakın:
Spark SSS: Sorun giderme sürecini hızlandırmak için yaygın Spark çalıştırma sorunlarına yönelik çözümleri bulun. Daha fazla bilgi için Spark SSS konusuna bakın.
Spark işi tanılama: MaxCompute Logview aracını ve Spark web kullanıcı arayüzünü sağlar. Bir işin doğru şekilde gönderildiğini ve çalıştığını doğrulamak için iş günlüklerini kullanın. Daha fazla bilgi için Spark işi tanılama konusuna bakın.