Apache Spark için Amazon Redshift entegrasyonu ile Amazon Redshift verilerinde Apache Spark uygulamalarını basitleştirin ve hızlandırın

Apache Spark için Amazon Redshift entegrasyonu ile Amazon Redshift verilerinde Apache Spark uygulamalarını basitleştirin ve hızlandırın

Kaynak Düğüm: 2597866

Müşteriler kullanmak Amazon Kırmızıya Kaydırma iş açısından kritik analitiklerini petabaytlarca yapılandırılmış ve yarı yapılandırılmış veriler üzerinde çalıştırmak için. Apache Spark, ETL (ayıklama, dönüştürme ve yükleme), etkileşimli analitik ve makine öğrenimi (ML) gibi kullanım durumlarına yönelik uygulamalar oluşturmak için kullanabileceğiniz popüler bir çerçevedir. Apache Spark, Amazon Redshift veri ambarınızdaki verilere erişerek Java, Scala ve Python gibi çeşitli dillerde uygulamalar oluşturmanıza olanak tanır.

Apache Spark için Amazon Redshift entegrasyonu, geliştiricilerin Apache Spark uygulamalarını Amazon Redshift verileri üzerinde sorunsuz bir şekilde oluşturmasına ve çalıştırmasına yardımcı olur. Geliştiriciler, aşağıdakiler gibi AWS analitiği ve makine öğrenimi hizmetlerini kullanabilir: Amazon EMR'si, AWS Tutkal, ve Amazon Adaçayı Yapıcı Amazon Redshift veri ambarından okuyan ve buraya yazan Apache Spark uygulamalarını zahmetsizce oluşturmak için. Bunu, uygulamalarınızın performansından veya verilerinizin işlemsel tutarlılığından ödün vermeden yapabilirsiniz.

Bu gönderide, Apache Spark için Amazon Redshift entegrasyonunun analitik ve makine öğrenimi için neden kritik ve verimli olduğunu ele alıyoruz. Ayrıca, işletme üzerinde etki yaratmak için Amazon Redshift ile Apache Spark entegrasyonunu kullanan kullanım durumlarını ele alıyoruz. Son olarak, bu resmi AWS bağlayıcısının bir Apache Spark uygulamasında nasıl kullanılacağına ilişkin adım adım örneklerle size yol gösteriyoruz.

Apache Spark için Amazon Redshift entegrasyonu

Apache Spark için Amazon Redshift entegrasyonu, bir kıvılcım-kırmızıya kaydırma bağlayıcısı (topluluk versiyonu) ve analitik ve makine öğrenimi görevlerine hazırlanmak için gereken süreyi kısaltır. Yalnızca veri ambarınızla bağlantıyı belirtmeniz yeterlidir ve dakikalar içinde Apache Spark tabanlı uygulamalarınızdaki Amazon Redshift verileriyle çalışmaya başlayabilirsiniz.

Amazon Redshift veri ambarınızdan tüketen Apache Spark uygulamasına yalnızca ilgili verilerin taşınması için sıralama, toplama, sınırlama, birleştirme ve skaler işlevler gibi işlemler için çeşitli aşağı açılan yetenekler kullanabilirsiniz. Bu, uygulamalarınızın performansını artırmanıza olanak tanır. Amazon Redshift yöneticileri, Spark tabanlı uygulamalardan oluşturulan SQL'i kolayca tanımlayabilir. Bu gönderide, Apache Spark işi tarafından oluşturulan SQL'i nasıl bulabileceğinizi gösteriyoruz.

Ayrıca, Apache Spark için Amazon Redshift entegrasyonu, verileri geçici bir dizinde hazırlarken Parquet dosya biçimini kullanır. Amazon Redshift, bu geçici verileri depolamak için UNLOAD SQL deyimini kullanır. Amazon Basit Depolama Hizmeti (Amazon S3). Apache Spark uygulaması, performansı artıran geçici dizinden (Parquet dosya biçiminde depolanan) sonuçları alır.

kullanarak uygulamalarınızı daha güvenli hale getirmeye de yardımcı olabilirsiniz. AWS Kimlik ve Erişim Yönetimi Amazon Redshift'e bağlanmak için (IAM) kimlik bilgileri.

Apache Spark için Amazon Redshift entegrasyonu, kıvılcım-redshift bağlayıcısının (topluluk versiyonu) ve performans ve güvenlik için geliştirerek 10 kata kadar daha hızlı uygulama performansı elde etmenize yardımcı olur.

Apache Spark ile Amazon Redshift entegrasyonu için kullanım örnekleri

Kullanım durumumuz için, ürün tabanlı şirketin liderliği, her bir ürünün birden çok pazardaki satışlarını bilmek istiyor. Şirketin satışları dinamik bir şekilde dalgalanırken, birden fazla pazardaki satışları takip etmek liderlik için bir zorluk haline geldi. Ancak, genel satışlar düşüyor ve şirket yönetimi, promosyon kampanyaları için bu pazarları hedefleyebilmek için hangi pazarların performans göstermediğini öğrenmek istiyor.

Birden çok pazardaki satışlar için siparişler, işlemler ve sevkiyat verileri gibi ürün satış verileri, veri gölünde Amazon S3'te bulunur. Veri mühendisliği ekibi, bu verileri Amazon S3'te analiz etmek için Amazon EMR veya AWS Glue ile Apache Spark'ı kullanabilir.

Envanter verileri Amazon Redshift'te mevcuttur. Benzer şekilde veri mühendisliği ekibi, toplamaları ve dönüşümleri gerçekleştirmek için Apache Spark için Amazon Redshift entegrasyonunu kullanarak Amazon EMR veya bir AWS Glue işini kullanarak bu verileri Apache Spark ile analiz edebilir. Toplanan ve dönüştürülen veri kümesi, Apache Spark için Amazon Redshift entegrasyonu kullanılarak tekrar Amazon Redshift'te depolanabilir.

Apache Spark için Amazon Redshift entegrasyonuyla Apache Spark gibi dağıtılmış bir çerçeve kullanmak, satış bilgileri oluşturmak için veri gölü ve veri ambarı genelinde görünürlük sağlayabilir. Bu içgörüler, Amazon Redshift'teki iş paydaşlarına ve iş kolu kullanıcılarına, düşük gelirli pazar segmentlerinde hedeflenen promosyonlar yürütmek üzere bilinçli kararlar vermek için kullanılabilir.

Ek olarak, aşağıdaki kullanım durumlarında Amazon Redshift entegrasyonunu Apache Spark ile kullanabiliriz:

  • Apache Spark işlerini çalıştıran bir Amazon EMR veya AWS Glue müşterisi, verileri dönüştürmek ve bunu ETL işlem hattının bir parçası olarak Amazon Redshift'e yazmak istiyor
  • Bir makine öğrenimi müşterisi, Amazon Redshift'teki verilere erişmek ve bunları dönüştürmek için özellik mühendisliği için SageMaker ile Apache Spark kullanıyor
  • Bir Amazon EMR, AWS Glue veya SageMaker müşterisi, not defterlerinden Amazon Redshift üzerindeki verilerle etkileşimli veri analizi için Apache Spark kullanıyor

Bir Apache Spark uygulamasında Apache Spark için Amazon Redshift entegrasyonu örnekleri

Bu gönderide, Amazon Redshift'i Amazon EMR'den bağlama adımlarını gösteriyoruz. Amazon Elastik Bilgi İşlem Bulutu (Amazon EC2), Amazon EMR Sunucusuzve ortak bir komut dosyası kullanan AWS Glue. Aşağıdaki örnek kodda, 2008 yılı için üç aylık satışları gösteren bir rapor oluşturuyoruz. Bunu yapmak için, bir Apache Spark DataFrame kullanarak iki Amazon Redshift tablosunu birleştiriyoruz, bir yüklem aşağı doğru çalıştırıyoruz, verileri toplayıp sıralıyoruz ve dönüştürülenleri yazıyoruz. veriler Amazon Redshift'e geri döner. Komut dosyası PySpark kullanıyor

Komut dosyası kullanır Amazon Redshift için IAM tabanlı kimlik doğrulama. Amazon EMR ve AWS Glue tarafından kullanılan IAM rolleri, Amazon Redshift'in kimliğini doğrulamak için uygun izinlere ve geçici veri depolama için bir S3 klasörüne erişime sahip olmalıdır.

Aşağıdaki örnek politika, IAM rolünün GetClusterCredentials operasyonlar:

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "redshift:GetClusterCredentials", "Resource": "arn:aws:redshift:<aws_region_name>:xxxxxxxxxxxx:dbuser:*/temp_*" }
}

Aşağıdaki örnek politika, geçici veri depolama için bir S3 klasörüne erişim sağlar:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket" ], "Resource": "arn:aws:s3:::<s3_bucket_name>" } ]
}

Tam komut dosyası aşağıdaki gibidir:

from pyspark.sql import SparkSession
from pyspark.sql.functions import col # Initiate Apache Spark session
spark = SparkSession .builder .appName("SparkRedshiftConnector") .enableHiveSupport() .getOrCreate() # Set connection options for Amazon Redshift
jdbc_iam_url = "jdbc:redshift:iam://redshift-spark-connector-1.xxxxxxxxxxx.<aws_region_name>.redshift.amazonaws.com:5439/sample_data_dev"
temp_dir = 's3://<s3_bucket_name>/redshift-temp-dir/'
aws_role = 'arn:aws:iam::xxxxxxxxxxxx:role/redshift-s3' # Set query group for the query. More details on Amazon Redshift WLM https://docs.aws.amazon.com/redshift/latest/dg/cm-c-executing-queries.html
queryGroup = "emr-redshift"
jdbc_iam_url_withQueryGroup = jdbc_iam_url+'?queryGroup='+queryGroup # Set User name for the query
userName = 'awsuser'
jdbc_iam_url_withUserName = jdbc_iam_url_withQueryGroup+';user='+userName # Define the Amazon Redshift context
redshiftOptions = { "url": jdbc_iam_url_withUserName, "tempdir": temp_dir, "aws_iam_role" : aws_role
} # Create the sales DataFrame from Amazon Redshift table using io.github.spark_redshift_community.spark.redshift class
sales_df = ( spark.read .format("io.github.spark_redshift_community.spark.redshift") .options(**redshiftOptions) .option("dbtable", "tickit.sales") .load()
) # Create the date Data Frame from Amazon Redshift table
date_df = ( spark.read .format("io.github.spark_redshift_community.spark.redshift") .options(**redshiftOptions) .option("dbtable", "tickit.date") .load()
) # Assign a Data Frame to the above output which will be written back to Amazon Redshift
output_df= sales_df.join(date_df, sales_df.dateid == date_df.dateid, 'inner').where( col("year") == 2008).groupBy("qtr").sum("qtysold").select( col("qtr"), col("sum(qtysold)")).sort(["qtr"], ascending=[1]).withColumnRenamed("sum(qtysold)","total_quantity_sold") # Display the output
output_df.show() ## Lets drop the queryGroup for easy validation of push down queries
# Set User name for the query
userName = 'awsuser'
jdbc_iam_url_withUserName = jdbc_iam_url+'?user='+userName # Define the Amazon Redshift context
redshiftWriteOptions = { "url": jdbc_iam_url_withUserName, "tempdir": temp_dir, "aws_iam_role" : aws_role
} # Write the Data Frame back to Amazon Redshift
output_df.write .format("io.github.spark_redshift_community.spark.redshift") .mode("overwrite") .options(**redshiftWriteOptions) .option("dbtable", "tickit.test") .save()

Önceki komut dosyasını ortamınızda kullanmayı planlıyorsanız, aşağıdaki değişkenlerin değerlerini ortamınız için uygun değerlerle değiştirdiğinizden emin olun: jdbc_iam_url, temp_dir, ve aws_role.

Bir sonraki bölümde, Amazon Redshift'te kullanıma sunulan örnek bir veri kümesini bir araya getirmek için bu betiği çalıştırma adımlarını inceleyeceğiz.

Önkoşullar

Başlamadan önce, aşağıdaki ön koşulların karşılandığından emin olun:

AWS CloudFormation kullanarak kaynakları dağıtın

CloudFormation yığınını dağıtmak için aşağıdaki adımları tamamlayın:

  1. Adresinde oturum açın AWS Yönetim Konsolu, ardından CloudFormation yığınını başlatın:
    BDB-2063-lansman-bulutformasyon-yığın

Ayrıca şunları da yapabilirsiniz CloudFormation şablonunu indirin bu gönderide bahsedilen kaynakları kod olarak altyapı (IaC) aracılığıyla oluşturmak. Yeni bir CloudFormation yığını başlatırken bu şablonu kullanın.

  1. Seçmek için sayfanın en altına gidin AWS CloudFormation'ın IAM kaynakları oluşturabileceğini kabul ediyorum altında Uygulama Alanı, Daha sonra seçmek Yığın oluştur.

Yığın oluşturma işleminin tamamlanması 15-20 dakika sürer. CloudFormation şablonu aşağıdaki kaynakları oluşturur:

    • Gerekli alt ağlara, yönlendirme tablolarına ve NAT ağ geçidine sahip bir Amazon VPC
    • adlı bir S3 klasörü redshift-spark-databucket-xxxxxxx (xxxxxxx'in grup adını benzersiz kılmak için rastgele bir dize olduğunu unutmayın)
    • Örnek verilerin veritabanına yüklendiği bir Amazon Redshift kümesi dev ve birincil kullanıcı redshiftmasteruser. Bu blog gönderisinin amacı doğrultusunda, redshiftmasteruser yönetici izinleri ile kullanılır. Ancak, üretim ortamında hassas erişim kontrolüne sahip bir kullanıcının kullanılması önerilir.
    • Amazon Redshift kümesinin geliştirici veritabanından geçici kimlik bilgileri talep etme becerisine sahip, Amazon Redshift için kullanılacak bir IAM rolü
    • Amazon EMR Stüdyosu gerekli IAM rolleriyle
    • Amazon EMR, gerekli IAM rollerine sahip bir EC6.9.0 kümesinde sürüm 2'ı yayınladı
    • Bir Amazon EMR Sunucusuz uygulama yayın sürümü 6.9.0
    • AWS Glue bağlantısı ve AWS Glue işi sürüm 4.0
    • A Jupyter dizüstü bilgisayar bir EC2 kümesinde Amazon EMR kullanarak Amazon EMR Studio kullanarak çalıştırmak için
    • Amazon EMR Studio ve Amazon EMR Serverless kullanılarak çalıştırılacak bir PySpark betiği
  1. Yığın oluşturma tamamlandıktan sonra yığın adını seçin redshift-spark ve Çıkışlar

Bu çıktı değerlerini bu yazının ilerleyen kısımlarında kullanacağız.

Sonraki bölümlerde Amazon EC2, Amazon EMR Serverless ve AWS Glue üzerinde Amazon EMR'den Apache Spark için Amazon Redshift entegrasyonu adımlarını gösteriyoruz.

EC2'de Amazon EMR'de Apache Spark ile Amazon Redshift entegrasyonunu kullanın

Amazon EMR sürüm 6.9.0 ve üzeri sürümlerden başlayarak, Apache Spark için Amazon Redshift entegrasyonunu kullanan bağlayıcı ve Amazon Redshift JDBC sürücüsü Amazon EMR'de yerel olarak kullanılabilir. Bu dosyalar altında bulunur /usr/share/aws/redshift/ dizin. Ancak, Amazon EMR'nin önceki sürümlerinde, topluluk sürümü spark-redshift konnektör kullanılabilir.

Aşağıdaki örnek, bir PySpark çekirdeği kullanarak Amazon Redshift'e nasıl bağlanılacağını gösterir. Amazon EMR Stüdyosu not defteri. CloudFormation yığını, Amazon EMR Studio'yu, bir EC2 kümesinde Amazon EMR'yi ve çalıştırılabilecek bir Jupyter not defterini oluşturdu. Bu örneği incelemek için aşağıdaki adımları tamamlayın:

  1. Sizin için S3 klasöründe kullanıma sunulan Jupyter not defterini indirin:
    • CloudFormation yığın çıktılarında şu değeri arayın: EMRStudioNotebookişaret etmesi gereken redshift-spark-emr.ipynb dizüstü bilgisayar S3 paketinde mevcuttur.
    • Bağlantıyı seçin veya not defterinin URL'sini kopyalayarak bağlantıyı yeni bir sekmede açın.
    • Bağlantıyı açtıktan sonra, not defterini seçerek indirin. İndir, bu dosyayı bilgisayarınıza yerel olarak kaydeder.
  1. Anahtar için CloudFormation yığın çıktılarında sağlanan bağlantıyı seçerek veya kopyalayarak Amazon EMR Studio'ya erişin EMRStudioURL.
  2. Gezinti bölmesinde şunu seçin: Çalışma Alanları.
  3. Klinik Çalışma Alanı Oluştur.
  4. Örneğin Çalışma Alanı için bir ad girin redshift-spark.
  5. genişletmek Gelişmiş yapılandırma bölümünü seçip Workspace'i bir EMR kümesine ekleyin.
  6. Altında Bir EMR kümesine iliştirin, adlı EMR kümesini seçin emrCluster-Redshift-Spark.
  7. Klinik Çalışma Alanı Oluştur.
  8. Amazon EMR Studio Çalışma Alanı oluşturulduktan ve Eklendi durumuna getirildikten sonra, Çalışma Alanının adını seçerek Çalışma Alanına erişebilirsiniz.

Bu, Çalışma Alanını yeni bir sekmede açmalıdır. Bir açılır pencere engelleyiciniz varsa, Çalışma Alanının açılır pencere engelleyiciyi açmasına veya devre dışı bırakmasına izin vermeniz gerekebileceğini unutmayın.

Amazon EMR Studio Workspace'te, daha önce indirdiğimiz Jupyter not defterini şimdi yüklüyoruz.

  1. Klinik Foto Yükle yerel dosya sisteminize göz atmak ve Jupyter not defterini yüklemek için (redshift-spark-emr.ipynb).
  2. seçin (çift tıklayın). redshift-spark-emr.ipynb not defterini açmak için Çalışma Alanı içindeki not defteri.

Not defteri, gerçekleştirdiği farklı görevlerin ayrıntılarını sağlar. bölümünde olduğuna dikkat edin Amazon Redshift kümesine bağlanacak değişkenleri tanımlayın, için değerleri güncellemeniz gerekmez jdbc_iam_url, temp_dir, ve aws_role çünkü bunlar sizin için AWS CloudFormation tarafından güncellenir. AWS CloudFormation ayrıca şu bölümde belirtilen adımları da gerçekleştirmiştir: Önkoşullar defterin bölümü.

Artık not defterini çalıştırmaya başlayabilirsiniz.

  1. Tek tek hücreleri seçerek ve ardından seçerek çalıştırın. OYNA.

Ayrıca tuş kombinasyonunu da kullanabilirsiniz. Shift + Enter or Shift+Dönüş. Alternatif olarak, seçerek tüm hücreleri çalıştırabilirsiniz. Tüm Hücreleri Çalıştır üzerinde koşmak menüsü.

  1. Apache Spark için Amazon Redshift entegrasyonu tarafından Amazon Redshift kümesinde gerçekleştirilen yüklem aşağı indirme işlemini bulun.

Amazon S3'te depolanan geçici verileri de optimize edilmiş Parquet biçiminde görebiliriz. Çıktı, bölümdeki hücrenin çalıştırılmasından görülebilir. Amazon Redshift'te yürütülen son sorguyu alın.

  1. İş tarafından Amazon EC2'de Amazon EMR'den oluşturulan tabloyu doğrulamak için Amazon Redshift konsoluna gidin ve kümeyi seçin redshift-spark-redshift-cluster üzerinde Tedarik edilen kümeler panosu gidin.
  2. Küme ayrıntılarında, Verileri sorgula menü seç Sorgu düzenleyicisi v2'de sorgu.
  3. Gezinti bölmesinde kümeyi seçin ve kimlik doğrulama istediğinde Amazon Redshift kümesine bağlanın.
  4. seç Geçici kimlik bilgileri.
  5. İçin veritabanı, girmek dev.
  6. İçin kullanıcı adı, girmek redshiftmasteruser.
  7. Klinik İndirim.
  8. Gezinti bölmesinde kümeyi genişletin redshift-spark-redshift-cluster, geliştirici veritabanını genişletin, genişletin tickit, ve genişlet tablolar şema içindeki tüm tabloları listelemek için tickit.

masayı bulmalısın test_emr.

  1. Tabloyu seçin (sağ tıklayın) test_emr, Daha sonra seçmek Tablo seçin tabloyu sorgulamak için
  2. Klinik koşmak SQL deyimini çalıştırmak için.

Amazon EMR Sunucusuz'da Apache Spark ile Amazon Redshift entegrasyonunu kullanın

Amazon EMR sürüm 6.9.0 ve üzeri, Apache Spark JAR'lar (Amazon Redshift tarafından yönetilen) ve Amazon Redshift JDBC JAR'lar için yerel olarak Amazon EMR Sunucusuz üzerinde Amazon Redshift entegrasyonu sağlar. Bu dosyalar altında bulunur /usr/share/aws/redshift/ dizin. Aşağıdaki örnekte, daha önce oluşturduğumuz CloudFormation yığını tarafından S3 klasöründe kullanıma sunulan Python betiğini kullanıyoruz.

  1. CloudFormation yığın çıktılarında, değerini not edin. EMRServerlessExecutionScript, bu, Python betiğinin S3 klasöründeki konumudur.
  2. Ayrıca şu değere dikkat edin: EMRServerlessJobExecutionRole, Amazon EMR Sunucusuz işini çalıştırırken kullanılacak IAM rolü.
  3. Anahtar için CloudFormation yığın çıktılarında sağlanan bağlantıyı seçerek veya kopyalayarak Amazon EMR Studio'ya erişin EMRStudioURL.
  4. Klinik Uygulamalar altında Serverless Gezinti bölmesinde.

Adıyla CloudFormation yığını tarafından oluşturulan bir EMR uygulaması bulacaksınız. emr-spark-redshift.

  1. Bir iş göndermek için uygulama adını seçin.
  2. Klinik iş gönder.
  3. Altında İş detayları, Için Name, iş için tanımlanabilir bir ad girin.
  4. İçin Çalışma zamanı rolü, daha önce CloudFormation yığın çıktısından not ettiğiniz IAM rolünü seçin.
  5. İçin Komut dosyası konumu, CloudFormation yığın çıktısından daha önce not aldığınız Python betiğinin yolunu sağlayın.
  6. Bölümü genişlet Kıvılcım özellikleri ve seçiniz metinde düzenle
  7. yolunu sağlayan metin kutusuna aşağıdaki değeri girin. redshift-connector, Amazon Redshift JDBC sürücüsü, spark-avro JAR ve minimal-json JAR dosyaları:
    --jars /usr/share/aws/redshift/jdbc/RedshiftJDBC.jar,/usr/share/aws/redshift/spark-redshift/lib/spark-redshift.jar,/usr/share/aws/redshift/spark-redshift/lib/spark-avro.jar,/usr/share/aws/redshift/spark-redshift/lib/minimal-json.jar

  8. Klinik iş gönder.
  9. İşin tamamlanmasını ve çalışma durumunun şu şekilde görünmesini bekleyin: başarı.
  10. Tablonun başarıyla oluşturulup oluşturulmadığını görmek için Amazon Redshift sorgu düzenleyicisine gidin.
  11. Amazon Redshift sorgu grubu için çalıştırılan aşağı açılan sorguları kontrol edin emr-serverless-redshift. Veritabanına karşı aşağıdaki SQL deyimini çalıştırabilirsiniz. dev:
    SELECT query_text FROM SYS_QUERY_HISTORY WHERE query_label = 'emr-serverless-redshift' ORDER BY start_time DESC LIMIT 1

Aşağı açılan sorgu ve dönüş sonuçlarının Amazon S3'te Parquet dosya biçiminde saklandığını görebilirsiniz.

AWS Glue üzerinde Apache Spark ile Amazon Redshift entegrasyonunu kullanın

AWS Glue sürüm 4.0 ve sonraki sürümlerden başlayarak, Amazon Redshift'e bağlanan Apache Spark işleri, Apache Spark ve Amazon Redshift JDBC sürücüsü için Amazon Redshift entegrasyonunu kullanabilir. Kaynak veya hedef olarak zaten Amazon Redshift kullanan mevcut AWS Glue işleri, bu yeni bağlayıcıdan yararlanmak için AWS Glue 4.0'a yükseltilebilir. Bu gönderiyle sağlanan CloudFormation şablonu, aşağıdaki AWS Glue kaynaklarını oluşturur:

  • Amazon Redshift için AWS Glue bağlantısı – Apache Spark için Amazon Redshift entegrasyonunu kullanarak AWS Glue'dan Amazon Redshift'e bağlantı kurmak için bağlantı
  • AWS Glue işine eklenen IAM rolü – AWS Glue işini çalıştırma izinlerini yönetmek için IAM rolü
  • AWS Glue işi – Apache Spark için Amazon Redshift entegrasyonunu kullanarak dönüşümleri ve toplamaları gerçekleştiren AWS Glue işi için komut dosyası

Aşağıdaki örnek, PySpark ile AWS Glue işine eklenen AWS Glue bağlantısını kullanır ve aşağıdaki adımları içerir:

  1. AWS Glue konsolunda seçin Bağlantılar Gezinti bölmesinde.
  2. Altında Bağlantılar, CloudFormation şablonu tarafından oluşturulan Amazon Redshift için AWS Glue bağlantısını seçin.
  3. Bağlantı ayrıntılarını doğrulayın.

Artık bu bağlantıyı bir iş içinde veya birden çok iş arasında yeniden kullanabilirsiniz.

  1. Üzerinde konektörler sayfasında, altında CloudFormation yığını tarafından oluşturulan AWS Glue işini seçin. İşlerinizveya anahtar için sağlanan URL'yi kullanarak AWS Glue işine erişin GlueJob CloudFormation yığın çıktısında.
  2. AWS Glue işi için komut dosyasına erişin ve komut dosyasını doğrulayın.
  3. Üzerinde İş detayları sekmesi olduğundan emin olun Tutkal versiyonu ayarlandı Tutkal 4.0.

Bu, işin en son teknolojiyi kullanmasını sağlar redshift-spark konnektör.

  1. Genişletmek Gelişmiş özellikler ve de Bağlantılar bölümünde, CloudFormation yığını tarafından oluşturulan bağlantının eklendiğini doğrulayın.
  2. AWS Glue işi için eklenen iş parametrelerini doğrulayın. Bu değerler, CloudFormation yığınının çıktısında da mevcuttur.
  3. Klinik İndirim ve sonra koşmak.

Çalıştırılan işin durumunu görüntüleyebilirsiniz. koşmak sekmesi.

  1. İş çalıştırma başarıyla tamamlandıktan sonra, AWS Glue işi tarafından oluşturulan test-glue tablosunun çıktısını doğrulayabilirsiniz.
  2. Amazon Redshift sorgu grubu için çalıştırılan aşağı açılan sorguları kontrol ediyoruz glue-redshift. Veritabanına karşı aşağıdaki SQL deyimini çalıştırabilirsiniz. dev:
    SELECT query_text FROM SYS_QUERY_HISTORY WHERE query_label = 'glue-redshift' ORDER BY start_time DESC LIMIT 1

En iyi uygulamalar

Aşağıdaki en iyi uygulamaları unutmayın:

  • kullanmak yerine Amazon EMR'den Apache Spark için Amazon Redshift entegrasyonunu kullanmayı düşünün. redshift-spark bağlayıcı (topluluk sürümü) yeni Apache Spark işleriniz için.
  • Kullanan mevcut Apache Spark işleriniz varsa redshift-spark bağlayıcı (topluluk sürümü), bunları Apache Spark için Amazon Redshift entegrasyonunu kullanacak şekilde yükseltmeyi düşünün
  • Apache Spark için Amazon Redshift entegrasyonu, performansı optimize etmek için tahmin ve sorgu aşağı indirmeyi otomatik olarak uygular. Desteklenen işlevleri kullanmanızı öneririz (autopushdown) Apache Spark için Amazon Redshift entegrasyonu, işlevi bir SQL sorgusuna dönüştürür ve sorguyu Amazon Redshift'te çalıştırır. Bu optimizasyon, gerekli verilerin alınmasıyla sonuçlanır, böylece Apache Spark daha az veri işleyebilir ve daha iyi performansa sahip olabilir.
    • Gibi toplu aşağı açılan işlevleri kullanmayı düşünün avg, count, max, min, ve sum veri işleme için filtrelenmiş verileri almak için.
    • Aşağıdaki gibi Boole aşağı açılan işleçler kullanmayı düşünün in, isnull, isnotnull, contains, endswith, ve startswith veri işleme için filtrelenmiş verileri almak için.
    • Aşağıdaki gibi mantıksal aşağı açılan işleçler kullanmayı düşünün and, or, ve not (Ya da !) veri işleme için filtrelenmiş verileri almak için.
  • Parametreyi kullanarak bir IAM rolünü geçirmeniz önerilir. aws_iam_role Amazon EMR veya AWS Glue üzerindeki Apache Spark uygulamanızdan Amazon Redshift kimlik doğrulaması için. IAM rolü, bu blogun "Bir Apache Spark uygulamasında Apache Spark için Amazon Redshift entegrasyonu örnekleri" bölümünde gösterildiği gibi, Amazon Redshift'te kimlik doğrulaması yapmak üzere geçici IAM kimlik bilgilerini almak için gerekli izinlere sahip olmalıdır.
  • Bu özellikle, Amazon Redshift kullanıcı adınızı ve parolanızı gizli bilgiler yöneticisinde ve Amazon Redshift veritabanında tutmanız gerekmez.
  • Amazon Redshift, bu geçici verileri Amazon S3'te depolamak için UNLOAD SQL deyimini kullanır. Apache Spark uygulaması, sonuçları geçici dizinden alır (Parquet dosya biçiminde saklanır). Amazon S3'teki bu geçici dizin otomatik olarak temizlenmez ve bu nedenle ek maliyet getirebilir. kullanmanızı öneririz Amazon S3 yaşam döngüsü ilkeleri S3 grubu için saklama kurallarını tanımlamak için.
  • açmanız önerilir Amazon Redshift denetim günlüğü veritabanınızdaki bağlantılar ve kullanıcı etkinlikleri hakkındaki bilgileri günlüğe kaydetmek için.
  • açmanız önerilir Amazon Redshift kullanımda olmayan şifreleme verilerinizi Amazon Redshift'in veri merkezlerinde yazdığı gibi şifrelemek ve eriştiğinizde sizin için şifresini çözmek için.
  • Kutudan çıkar çıkmaz sunulan Apache Spark için Amazon Redshift entegrasyonunu kullanmak üzere AWS Glue v4.0 ve sonraki bir sürüme yükseltmeniz önerilir. AWS Glue'nun bu sürümüne yükseltme, bu özellikten otomatik olarak yararlanacaktır.
  • Apache Spark için Amazon Redshift entegrasyonunu kullanmak üzere Amazon EMR v6.9.0 ve sonraki bir sürüme yükseltmeniz önerilir. Açıkça herhangi bir sürücüyü veya JAR dosyasını yönetmenize gerek yoktur.
  • Apache Spark uygulamanızda Amazon Redshift verilerinizle etkileşim kurmak için Amazon EMR Studio not defterlerini kullanmayı düşünün.
  • Görsel bir arayüz kullanarak Apache Spark işleri oluşturmak için AWS Glue Studio kullanmayı düşünün. AWS Glue Studio içinde Scala veya PySpark'ta Apache Spark kodu yazmaya da geçiş yapabilirsiniz.

Temizlemek

Artık kullanmayacaksanız kaynaklar için faturalandırılmadığınızdan emin olmak üzere CloudFormation şablonunun bir parçası olarak oluşturulan kaynakları temizlemek üzere aşağıdaki adımları tamamlayın:

  1. Amazon EMR Sunucusuz uygulamasını durdurun:
    • Anahtar için CloudFormation yığın çıktılarında sağlanan bağlantıyı seçerek veya kopyalayarak Amazon EMR Studio'ya erişin EMRStudioURL.
    • Klinik Uygulamalar altında Serverless Gezinti bölmesinde.

Adıyla CloudFormation yığını tarafından oluşturulan bir EMR uygulaması bulacaksınız. emr-spark-redshift.

    • Uygulama durumu Durduruldu olarak görünüyorsa sonraki adımlara geçebilirsiniz. Ancak, uygulama durumu Başlatıldıysa, uygulama adını seçin ve ardından Uygulamayı durdur ve Uygulamayı durdur tekrar onaylamak için.
  1. Amazon EMR Studio Çalışma Alanını Silin:
    • Anahtar için CloudFormation yığın çıktılarında sağlanan bağlantıyı seçerek veya kopyalayarak Amazon EMR Studio'ya erişin EMRStudioURL.
    • Klinik Çalışma Alanları Gezinti bölmesinde.
    • Oluşturduğunuz Çalışma Alanı'nı seçin ve seçin Sil, Daha sonra seçmek Sil tekrar onaylamak için.
  2. CloudFormation yığınını silin:
    • AWS CloudFormation konsolunda daha önce oluşturduğunuz yığına gidin.
    • Yığın adını seçin ve ardından Sil yığını kaldırmak ve bu gönderinin bir parçası olarak oluşturulan kaynakları silmek için.
    • Onay ekranında, seçin Yığını sil.

Sonuç

Bu gönderide, veriler için sorgu performansını optimize etmek üzere tahmin ve sorgu aşağı indirmeyi otomatik olarak uygulamak üzere Amazon EC2, Amazon EMR Serverless ve AWS Glue üzerinde Amazon EMR ile uygulamalar oluşturmak ve dağıtmak için Apache Spark için Amazon Redshift entegrasyonunu nasıl kullanabileceğinizi açıkladık. Amazon Redshift'te. Amazon EMR veya AWS Glue'nuzdan Amazon Redshift'e sorunsuz ve güvenli bağlantı için Apache Spark için Amazon Redshift entegrasyonunu kullanmanız kesinlikle önerilir.

Apache Spark için Amazon Redshift entegrasyonu hakkında bazı müşterilerimizin görüşleri aşağıdadır:

"Mühendislerimize Python ve Scala kullanarak Apache Spark ile kendi veri boru hatlarını ve uygulamalarını oluşturma gücü veriyoruz. Operasyonları basitleştiren ve müşterilerimiz için daha hızlı ve daha verimli bir şekilde teslim eden özel bir çözüm istiyorduk ve Apache Spark için yeni Amazon Redshift entegrasyonuyla bunu elde ettik.”

—Huron Danışmanlık

"GE Aerospace, önemli iş kararlarını yönlendiren kritik iş içgörülerini etkinleştirmek için AWS analitiğini ve Amazon Redshift'i kullanıyor. Amazon S3'ten otomatik kopyalama desteğiyle, verileri Amazon S3'ten Amazon Redshift'e taşımak için daha basit veri hatları oluşturabiliyoruz. Bu, veri ürünü ekiplerimizin verilere erişme ve son kullanıcılara içgörü sağlama becerilerini hızlandırır. Veriler yoluyla değer katmak için daha fazla, entegrasyonlar için daha az zaman harcıyoruz.”

—GE Havacılık

"Odak noktamız, Goldman Sachs'taki tüm kullanıcılarımız için verilere self servis erişim sağlamak. Açık kaynaklı veri yönetimi ve yönetişim platformumuz Legend aracılığıyla, finansal hizmetler sektöründe işbirliği yaparken kullanıcıların veri merkezli uygulamalar geliştirmesine ve veri odaklı içgörüler elde etmesine olanak tanıyoruz. Apache Spark için Amazon Redshift entegrasyonuyla, veri platformu ekibimiz Amazon Redshift verilerine minimum manuel adımlarla erişebilecek ve sıfır kodlu ETL'ye izin vererek mühendislerin iş akışlarını mükemmelleştirmeye odaklanmalarını kolaylaştırma yeteneğimizi artıracak. eksiksiz ve zamanında bilgi toplarlar. Kullanıcılarımız artık Amazon Redshift'teki en son verilere kolayca erişebildiğinden, uygulamaların performansında iyileşme ve gelişmiş güvenlik görmeyi bekliyoruz."

-Goldman Sachs


Yazarlar Hakkında

Gagan Brahmi Amazon Web Services'ta büyük veri analitiği ve AI/ML platformuna odaklanan Kıdemli Uzman Çözüm Mimarıdır. Gagan, bilgi teknolojisinde 18 yılı aşkın deneyime sahiptir. Müşterilerin AWS üzerinde yüksek düzeyde ölçeklenebilir, performanslı ve güvenli bulut tabanlı çözümler tasarlamasına ve oluşturmasına yardımcı olur. Boş zamanlarında ailesiyle vakit geçiriyor ve yeni yerler keşfediyor.

Vivek Gautam AWS Profesyonel Hizmetlerinde veri göllerinde uzmanlığa sahip bir Veri Mimarıdır. AWS'de veri ürünleri, analitik platformları ve çözümler oluşturan kurumsal müşterilerle birlikte çalışır. Veri gölleri inşa edip tasarlamadığı zamanlarda Vivek, yeni seyahat yerleri keşfetmeyi ve doğa yürüyüşlerine çıkmayı da seven bir yemek tutkunu.

Naresh Gautam AWS'de 20 yıllık deneyime sahip bir Veri Analitiği ve Yapay Zeka/Yapay Öğrenme lideridir ve müşterilerin veriye dayalı karar alma süreçlerine güç katmak için yüksek düzeyde kullanılabilir, yüksek performanslı ve uygun maliyetli veri analitiği ve Yapay Zeka/ML çözümleri tasarlamasına yardımcı olmaktan keyif alır. . Boş zamanlarında meditasyon yapmaktan ve yemek yapmaktan hoşlanıyor.

Güzel Şerif Amazon Redshift sürücüleri ekibinde, Apache Spark bağlayıcısı ile Amazon Redshift Entegrasyonunun geliştirilmesine liderlik ettiği bir Yazılım Geliştirme Mühendisidir. Birden çok sektörde veriye dayalı platformlar oluşturma konusunda 20 yılı aşkın deneyime sahiptir. Boş zamanlarında ailesiyle vakit geçirmekten ve sörf yapmaktan hoşlanır.

Zaman Damgası:

Den fazla AWS Büyük Veri