Spark SQL - Hızlı Kılavuz

Sektörler, veri setlerini analiz etmek için yoğun bir şekilde Hadoop'u kullanıyor. Bunun nedeni, Hadoop çerçevesinin basit bir programlama modeline (MapReduce) dayanması ve ölçeklenebilir, esnek, hataya dayanıklı ve uygun maliyetli bir hesaplama çözümü sağlamasıdır. Burada asıl mesele, sorgular arasındaki bekleme süresi ve programı çalıştırmak için bekleme süresi açısından büyük veri kümelerini işlemede hızı korumaktır.

Spark, Hadoop hesaplamalı bilgi işlem yazılımı sürecini hızlandırmak için Apache Software Foundation tarafından tanıtıldı.

Ortak bir inanca karşı, Spark is not a modified version of Hadoopve kendi küme yönetimine sahip olduğu için Hadoop'a gerçekten bağımlı değildir. Hadoop, Spark'ı uygulamanın yollarından yalnızca biridir.

Spark, Hadoop'u iki şekilde kullanır - biri storage ve ikincisi processing. Spark kendi küme yönetimi hesaplamasına sahip olduğundan, Hadoop'u yalnızca depolama amacıyla kullanır.

Apache Spark

Apache Spark, hızlı hesaplama için tasarlanmış, ışık hızında bir küme bilgi işlem teknolojisidir. Hadoop MapReduce'a dayanır ve MapReduce modelini, etkileşimli sorgular ve akış işlemeyi içeren daha fazla hesaplama türü için verimli bir şekilde kullanmak üzere genişletir. Spark'ın ana özelliği,in-memory cluster computing bu, bir uygulamanın işlem hızını artırır.

Spark, toplu uygulamalar, yinelemeli algoritmalar, etkileşimli sorgular ve akış gibi çok çeşitli iş yüklerini kapsayacak şekilde tasarlanmıştır. Tüm bu iş yükünü ilgili bir sistemde desteklemenin yanı sıra, ayrı araçları korumanın yönetim yükünü azaltır.

Apache Spark'ın Evrimi

Spark, Matei Zaharia tarafından UC Berkeley'in AMPLab'ında 2009 yılında geliştirilen Hadoop'un alt projelerinden biridir. 2010 yılında bir BSD lisansı altında Açık Kaynaklıdır. 2013'te Apache yazılım vakfına bağışlandı ve şimdi Apache Spark, Şubat-2014'ten itibaren üst düzey bir Apache projesi haline geldi.

Apache Spark'ın Özellikleri

Apache Spark aşağıdaki özelliklere sahiptir.

  • Speed- Spark, bir uygulamanın Hadoop kümesinde, bellekte 100 kata kadar ve diskte çalışırken 10 kat daha hızlı çalıştırılmasına yardımcı olur. Bu, diske yapılan okuma / yazma işlemlerinin sayısını azaltarak mümkündür. Ara işlem verilerini bellekte depolar.

  • Supports multiple languages- Spark, Java, Scala veya Python'da yerleşik API'ler sağlar. Bu nedenle, farklı dillerde uygulama yazabilirsiniz. Spark, etkileşimli sorgulama için 80 üst düzey operatör ile birlikte gelir.

  • Advanced Analytics- Spark yalnızca 'Harita'yı ve' azalt'ı desteklemez. Ayrıca SQL sorgularını, Akış verilerini, Makine öğrenimini (ML) ve Grafik algoritmalarını destekler.

Spark, Hadoop'ta Oluşturuldu

Aşağıdaki diyagram, Spark'ın Hadoop bileşenleriyle nasıl oluşturulabileceğinin üç yolunu gösterir.

Aşağıda açıklandığı gibi Spark dağıtımının üç yolu vardır.

  • Standalone- Spark Bağımsız dağıtım, Spark'ın HDFS (Hadoop Dağıtılmış Dosya Sistemi) üzerindeki yeri işgal ettiği ve HDFS için açık bir şekilde yer ayrıldığı anlamına gelir. Burada, Spark ve MapReduce, kümedeki tüm kıvılcım işlerini kapsayacak şekilde yan yana çalışacaktır.

  • Hadoop Yarn- Hadoop Yarn dağıtımı, herhangi bir ön kurulum veya kök erişimi gerekmeden Yarn üzerinde basitçe kıvılcım çalışmaları anlamına gelir. Spark'ı Hadoop ekosistemine veya Hadoop yığınına entegre etmeye yardımcı olur. Diğer bileşenlerin yığının en üstünde çalışmasına izin verir.

  • Spark in MapReduce (SIMR)- MapReduce'ta Spark, bağımsız dağıtıma ek olarak kıvılcım işi başlatmak için kullanılır. SIMR ile kullanıcı Spark'ı başlatabilir ve kabuğunu herhangi bir yönetici erişimi olmadan kullanabilir.

Spark Bileşenleri

Aşağıdaki çizim, Spark'ın farklı bileşenlerini tasvir etmektedir.

Apache Spark Çekirdeği

Spark Core, diğer tüm işlevlerin üzerine inşa edildiği kıvılcım platformunun temelini oluşturan genel yürütme motorudur. Bellek içi bilgi işlem ve harici depolama sistemlerinde referans veri kümeleri sağlar.

Spark SQL

Spark SQL, yapılandırılmış ve yarı yapılandırılmış veriler için destek sağlayan SchemaRDD adlı yeni bir veri soyutlaması sunan Spark Core'un üzerinde bir bileşendir.

Kıvılcım Akışı

Spark Streaming, akış analizi gerçekleştirmek için Spark Core'un hızlı programlama özelliğinden yararlanır. Verileri mini gruplar halinde alır ve bu mini veri yığınları üzerinde RDD (Esnek Dağıtılmış Veri Kümeleri) dönüşümleri gerçekleştirir.

MLlib (Makine Öğrenimi Kitaplığı)

MLlib, dağıtılmış bellek tabanlı Spark mimarisi nedeniyle Spark'ın üzerinde dağıtılmış bir makine öğrenimi çerçevesidir. Karşılaştırmalara göre, MLlib geliştiricileri tarafından Alternating En Küçük Kareler (ALS) uygulamalarına karşı yapılır. Spark MLlib, Hadoop disk tabanlı sürümünden dokuz kat daha hızlıdır.Apache Mahout (Mahout bir Spark arayüzü kazanmadan önce).

GraphX

GraphX, Spark'ın üzerinde dağıtılmış bir grafik işleme çerçevesidir. Pregel soyutlama API'sini kullanarak kullanıcı tanımlı grafikleri modelleyebilen grafik hesaplamasını ifade etmek için bir API sağlar. Ayrıca bu soyutlama için optimize edilmiş bir çalışma zamanı sağlar.

Esnek Dağıtılmış Veri Kümeleri

Esnek Dağıtılmış Veri Kümeleri (RDD), Spark'ın temel bir veri yapısıdır. Değişmez dağıtılmış nesneler koleksiyonudur. RDD'deki her veri kümesi, kümenin farklı düğümlerinde hesaplanabilen mantıksal bölümlere bölünmüştür. RDD'ler, kullanıcı tanımlı sınıflar dahil her tür Python, Java veya Scala nesnesini içerebilir.

Resmi olarak, bir RDD salt okunur, bölümlenmiş bir kayıt koleksiyonudur. RDD'ler, kararlı depolamadaki verilerde veya diğer RDD'lerde belirleyici işlemler yoluyla oluşturulabilir. RDD, paralel olarak çalıştırılabilen hataya dayanıklı bir öğe koleksiyonudur.

RDD oluşturmanın iki yolu vardır - parallelizing sürücü programınızda mevcut bir koleksiyon veya referencing a dataset paylaşılan bir dosya sistemi, HDFS, HBase veya bir Hadoop Giriş Formatı sunan herhangi bir veri kaynağı gibi harici bir depolama sisteminde.

Spark, daha hızlı ve verimli MapReduce işlemleri elde etmek için RDD konseptini kullanır. Öncelikle MapReduce işlemlerinin nasıl gerçekleştiğini ve neden bu kadar verimli olmadıklarını tartışalım.

MapReduce'da Veri Paylaşımı Yavaş

MapReduce, bir küme üzerinde paralel, dağıtılmış bir algoritma ile büyük veri kümelerini işlemek ve oluşturmak için yaygın olarak benimsenmiştir. Kullanıcıların, iş dağıtımı ve hata toleransı konusunda endişelenmelerine gerek kalmadan bir dizi üst düzey operatör kullanarak paralel hesaplamalar yazmasına olanak tanır.

Ne yazık ki, mevcut çerçevelerin çoğunda, hesaplamalar arasında verileri yeniden kullanmanın tek yolu (Örn: iki MapReduce işi arasında), verileri harici bir kararlı depolama sistemine (Örn: HDFS) yazmaktır. Bu çerçeve, bir kümenin hesaplama kaynaklarına erişim için çok sayıda soyutlama sağlasa da, kullanıcılar yine de daha fazlasını istiyor.

Her ikisi de Iterative ve Interactiveuygulamalar, paralel işler arasında daha hızlı veri paylaşımı gerektirir. MapReduce'ta veri paylaşımı yavaşreplication, serialization, ve disk IO. Depolama sistemi ile ilgili olarak, Hadoop uygulamalarının çoğu, zamanın% 90'ından fazlasını HDFS okuma-yazma işlemlerine harcıyorlar.

MapReduce'da Yinelemeli İşlemler

Çok aşamalı uygulamalarda birden çok hesaplamada ara sonuçları yeniden kullanın. Aşağıdaki çizim, MapReduce üzerinde yinelemeli işlemleri yaparken mevcut çerçevenin nasıl çalıştığını açıklamaktadır. Bu, sistemi yavaşlatan veri çoğaltma, disk G / Ç ve serileştirme nedeniyle önemli ek yüklere neden olur.

MapReduce'da Etkileşimli İşlemler

Kullanıcı, aynı veri alt kümesinde anlık sorgular çalıştırır. Her sorgu, uygulama yürütme süresine hakim olabilecek sabit depolama alanında disk G / Ç işlemini gerçekleştirecektir.

Aşağıdaki çizim, MapReduce üzerinde etkileşimli sorgular yaparken mevcut çerçevenin nasıl çalıştığını açıklamaktadır.

Spark RDD kullanarak Veri Paylaşımı

MapReduce'ta veri paylaşımı yavaş replication, serialization, ve disk IO. Hadoop uygulamalarının çoğu, zamanın% 90'ından fazlasını HDFS okuma-yazma işlemleri yaparak geçirirler.

Bu sorunu fark eden araştırmacılar, Apache Spark adlı özel bir çerçeve geliştirdiler. Kıvılcımın ana fikriResrarengiz Dpaylaştırılmış Datasetler (RDD); bellek içi işlem hesaplamasını destekler. Bu, bellek durumunu işler arasında bir nesne olarak depoladığı ve nesnenin bu işler arasında paylaşılabildiği anlamına gelir. Bellekteki veri paylaşımı, ağ ve Diskten 10 ila 100 kat daha hızlıdır.

Şimdi Spark RDD'de yinelemeli ve etkileşimli işlemlerin nasıl gerçekleştiğini bulmaya çalışalım.

Spark RDD'de Yinelemeli İşlemler

Aşağıda verilen çizim, Spark RDD üzerindeki yinelemeli işlemleri gösterir. Ara sonuçları Kararlı depolama (Disk) yerine dağıtılmış bir bellekte depolayacak ve sistemi daha hızlı hale getirecektir.

Note - Dağıtılmış bellek (RAM) ara sonuçları depolamak için yeterliyse (İşin Durumu), o zaman bu sonuçları diskte depolar

Spark RDD'de Etkileşimli İşlemler

Bu çizim, Spark RDD üzerindeki etkileşimli işlemleri gösterir. Aynı veri kümesi üzerinde tekrar tekrar farklı sorgular çalıştırılırsa, bu belirli veriler daha iyi yürütme süreleri için bellekte tutulabilir.

Varsayılan olarak, dönüştürülen her RDD, üzerinde bir eylemi her çalıştırdığınızda yeniden hesaplanabilir. Ancak şunları da yapabilirsiniz:persistBellekte bir RDD, bu durumda Spark, bir dahaki sefere sorguladığınızda çok daha hızlı erişim için öğeleri küme üzerinde tutar. Diskte kalıcı RDD'ler veya birden çok düğümde çoğaltılması için destek de vardır.

Spark, Hadoop'un alt projesidir. Bu nedenle, Spark'ı Linux tabanlı bir sisteme kurmak daha iyidir. Aşağıdaki adımlar Apache Spark'ın nasıl kurulacağını gösterir.

Adım 1: Java Kurulumunu Doğrulama

Java yüklemesi, Spark'ı kurarken zorunlu olan şeylerden biridir. JAVA sürümünü doğrulamak için aşağıdaki komutu deneyin.

$java -version

Java sisteminizde zaten yüklüyse, aşağıdaki yanıtı görürsünüz -

java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b13)
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)

Sisteminizde Java yüklü değilse, sonraki adıma geçmeden önce Java'yı yükleyin.

Adım 2: Scala Kurulumunu Doğrulama

Spark'ı uygulamak için Scala dilini kullanmalısınız. Öyleyse aşağıdaki komutu kullanarak Scala kurulumunu doğrulayalım.

$scala -version

Scala sisteminize zaten yüklüyse, aşağıdaki yanıtı görürsünüz -

Scala code runner version 2.11.6 -- Copyright 2002-2013, LAMP/EPFL

Sisteminizde Scala kurulu değilse, Scala kurulumu için bir sonraki adıma geçin.

3. Adım: Scala'yı İndirmek

Scala İndir bağlantısını ziyaret ederek en son Scala sürümünü indirin . Bu eğitim için scala-2.11.6 sürümünü kullanıyoruz. İndirdikten sonra, Scala tar dosyasını indirme klasöründe bulacaksınız.

Adım4: Scala'yı Yükleme

Scala'yı kurmak için aşağıda verilen adımları izleyin.

Scala tar dosyasını çıkarın

Scala tar dosyasını çıkarmak için aşağıdaki komutu yazın.

$ tar xvf scala-2.11.6.tgz

Scala yazılım dosyalarını taşıyın

Scala yazılım dosyalarını ilgili dizine taşımak için aşağıdaki komutları kullanın (/usr/local/scala).

$ su –
Password:
# cd /home/Hadoop/Downloads/
# mv scala-2.11.6 /usr/local/scala
# exit

Scala için PATH ayarla

Scala için PATH ayarlamak için aşağıdaki komutu kullanın.

$ export PATH = $PATH:/usr/local/scala/bin

Scala Kurulumunu Doğrulama

Kurulumdan sonra doğrulamak daha iyidir. Scala kurulumunu doğrulamak için aşağıdaki komutu kullanın.

$scala -version

Scala sisteminize zaten yüklüyse, aşağıdaki yanıtı görürsünüz -

Scala code runner version 2.11.6 -- Copyright 2002-2013, LAMP/EPFL

Adım5: Apache Spark'ı İndirme

Aşağıdaki Spark'ı İndir bağlantısını ziyaret ederek Spark'ın en son sürümünü indirin . Bu eğitim için kullanıyoruzspark-1.3.1-bin-hadoop2.6versiyon. İndirdikten sonra, Spark tar dosyasını indirme klasöründe bulacaksınız.

Adım 6: Spark'ı Yükleme

Spark'ı kurmak için aşağıda verilen adımları izleyin.

Kıvılcım katranının çıkarılması

Spark tar dosyasını çıkarmak için aşağıdaki komut.

$ tar xvf spark-1.3.1-bin-hadoop2.6.tgz

Spark yazılım dosyalarını taşıma

Spark yazılım dosyalarını ilgili dizine taşımak için aşağıdaki komutlar (/usr/local/spark).

$ su –
Password:
# cd /home/Hadoop/Downloads/
# mv spark-1.3.1-bin-hadoop2.6 /usr/local/spark
# exit

Spark için ortamı kurma

Aşağıdaki satırı ~ 'a ekleyin/.bashrcdosya. PATH değişkenine spark yazılım dosyasının bulunduğu konumu eklemek anlamına gelir.

export PATH = $PATH:/usr/local/spark/bin

~ / .Bashrc dosyasını kaynak bulmak için aşağıdaki komutu kullanın.

$ source ~/.bashrc

7. Adım: Spark Kurulumunu Doğrulama

Spark kabuğunu açmak için aşağıdaki komutu yazın.

$spark-shell

Kıvılcım başarıyla takılırsa, aşağıdaki çıktıyı bulacaksınız.

Spark assembly has been built with Hive, including Datanucleus jars on classpath
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
15/06/04 15:25:22 INFO SecurityManager: Changing view acls to: hadoop
15/06/04 15:25:22 INFO SecurityManager: Changing modify acls to: hadoop
disabled; ui acls disabled; users with view permissions: Set(hadoop); users with modify permissions: Set(hadoop)
15/06/04 15:25:22 INFO HttpServer: Starting HTTP Server
15/06/04 15:25:23 INFO Utils: Successfully started service 'HTTP class server' on port 43292.
Welcome to
    ____             __
   / __/__ ___ _____/ /__
   _\ \/ _ \/ _ `/ __/ '_/
   /___/ .__/\_,_/_/ /_/\_\ version 1.4.0
      /_/
Using Scala version 2.10.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_71)
Type in expressions to have them evaluated.
Spark context available as sc
scala>

Spark, Spark SQL adlı yapılandırılmış veri işleme için bir programlama modülü sunar. DataFrame adlı bir programlama soyutlaması sağlar ve dağıtılmış SQL sorgu motoru olarak işlev görebilir.

Spark SQL'in Özellikleri

Aşağıdakiler Spark SQL'in özellikleridir -

  • Integrated- SQL sorgularını Spark programlarıyla sorunsuz bir şekilde karıştırın. Spark SQL, Python, Scala ve Java'daki entegre API'ler ile yapılandırılmış verileri Spark'ta dağıtılmış bir veri kümesi (RDD) olarak sorgulamanıza olanak tanır. Bu sıkı entegrasyon, karmaşık analitik algoritmalarla birlikte SQL sorgularının çalıştırılmasını kolaylaştırır.

  • Unified Data Access- Çeşitli kaynaklardan veri yükleyin ve sorgulayın. Schema-RDD'ler, Apache Hive tabloları, parke dosyaları ve JSON dosyaları dahil olmak üzere yapılandırılmış verilerle verimli bir şekilde çalışmak için tek bir arabirim sağlar.

  • Hive Compatibility- Mevcut ambarlarda değiştirilmemiş Hive sorguları çalıştırın. Spark SQL, Hive ön ucunu ve MetaStore'u yeniden kullanarak size mevcut Hive verileri, sorguları ve UDF'lerle tam uyumluluk sağlar. Basitçe Hive ile birlikte kurun.

  • Standard Connectivity- JDBC veya ODBC üzerinden bağlanın. Spark SQL, endüstri standardı JDBC ve ODBC bağlantısına sahip bir sunucu modu içerir.

  • Scalability- Hem etkileşimli hem de uzun sorgular için aynı motoru kullanın. Spark SQL, orta sorgu hata toleransını desteklemek için RDD modelinden yararlanarak büyük işler için ölçeklendirilmesine de olanak tanır. Geçmiş veriler için farklı bir motor kullanma konusunda endişelenmeyin.

Spark SQL Mimarisi

Aşağıdaki çizim, Spark SQL'in mimarisini açıklamaktadır -

Bu mimari Dil API, Şema RDD ve Veri Kaynakları olmak üzere üç katman içerir.

  • Language API- Spark farklı diller ve Spark SQL ile uyumludur. Ayrıca bu diller tarafından desteklenmektedir - API (python, scala, java, HiveQL).

  • Schema RDD- Spark Core, RDD adı verilen özel veri yapısı ile tasarlanmıştır. Spark SQL genellikle şemalar, tablolar ve kayıtlar üzerinde çalışır. Bu nedenle Schema RDD'yi geçici tablo olarak kullanabiliriz. Bu Schema RDD'yi Data Frame olarak adlandırabiliriz.

  • Data Sources- Genellikle spark-core için Veri kaynağı bir metin dosyası, Avro dosyası, vs.'dir. Ancak, Spark SQL için Veri Kaynakları farklıdır. Bunlar Parquet dosyası, JSON belgesi, HIVE tabloları ve Cassandra veritabanıdır.

Sonraki bölümlerde bunlar hakkında daha fazla tartışacağız.

Bir DataFrame, adlandırılmış sütunlar halinde düzenlenen dağıtılmış bir veri koleksiyonudur. Kavramsal olarak, iyi optimizasyon tekniklerine sahip ilişkisel tablolara eşdeğerdir.

Bir DataFrame, Hive tabloları, Yapılandırılmış Veri dosyaları, harici veritabanları veya mevcut RDD'ler gibi bir dizi farklı kaynaktan oluşturulabilir. Bu API, modern Büyük Veri ve veri bilimi uygulamaları için tasarlanmıştır.DataFrame in R Programming ve Pandas in Python.

DataFrame'in Özellikleri

İşte DataFrame'in birkaç karakteristik özelliği:

  • Tek bir düğüm kümesinde büyük kümeye kadar Kilobayt'tan Petabayt'a kadar olan verileri işleyebilme.

  • Farklı veri formatlarını (Avro, csv, elastik arama ve Cassandra) ve depolama sistemlerini (HDFS, HIVE tabloları, mysql, vb.) Destekler.

  • Spark SQL Catalyst optimizer (ağaç dönüştürme çerçevesi) aracılığıyla son teknoloji optimizasyon ve kod üretimi.

  • Spark-Core aracılığıyla tüm Büyük Veri araçları ve çerçeveleriyle kolayca entegre edilebilir.

  • Python, Java, Scala ve R Programlama için API sağlar.

SQLContext

SQLContext bir sınıftır ve Spark SQL'in işlevlerini başlatmak için kullanılır. SparkContext sınıfı nesnesi (sc), SQLContext sınıfı nesnesini başlatmak için gereklidir.

Aşağıdaki komut, SparkContext'i spark-shell aracılığıyla başlatmak için kullanılır.

$ spark-shell

Varsayılan olarak, SparkContext nesnesi şu adla başlatılır: sc kıvılcım kabuğu başladığında.

SQLContext oluşturmak için aşağıdaki komutu kullanın.

scala> val sqlcontext = new org.apache.spark.sql.SQLContext(sc)

Misal

Adlı bir JSON dosyasındaki çalışan kayıtlarının bir örneğini ele alalım. employee.json. DataFrame (df) oluşturmak ve adlı JSON belgesini okumak için aşağıdaki komutları kullanınemployee.json aşağıdaki içeriğe sahip.

employee.json - Bu dosyayı geçerli dosyanın bulunduğu dizine yerleştirin. scala> işaretçi bulunur.

{
   {"id" : "1201", "name" : "satish", "age" : "25"}
   {"id" : "1202", "name" : "krishna", "age" : "28"}
   {"id" : "1203", "name" : "amith", "age" : "39"}
   {"id" : "1204", "name" : "javed", "age" : "23"}
   {"id" : "1205", "name" : "prudvi", "age" : "23"}
}

DataFrame İşlemleri

DataFrame, yapılandırılmış veri işleme için alana özgü bir dil sağlar. Burada, DataFrames kullanarak yapılandırılmış veri işlemenin bazı temel örneklerini ekliyoruz.

DataFrame işlemlerini gerçekleştirmek için aşağıda verilen adımları izleyin -

JSON Belgesini okuyun

Öncelikle JSON belgesini okumalıyız. Buna dayanarak, (dfs) adında bir DataFrame oluşturun.

Adlı JSON belgesini okumak için aşağıdaki komutu kullanın employee.json. Veriler, kimlik, ad ve yaş gibi alanları içeren bir tablo olarak gösterilir.

scala> val dfs = sqlContext.read.json("employee.json")

Output - Alan adları otomatik olarak employee.json.

dfs: org.apache.spark.sql.DataFrame = [age: string, id: string, name: string]

Verileri Göster

DataFrame'deki verileri görmek istiyorsanız, aşağıdaki komutu kullanın.

scala> dfs.show()

Output - Çalışan verilerini tablo formatında görebilirsiniz.

<console>:22, took 0.052610 s
+----+------+--------+
|age | id   |  name  |
+----+------+--------+
| 25 | 1201 | satish |
| 28 | 1202 | krishna|
| 39 | 1203 | amith  |
| 23 | 1204 | javed  |
| 23 | 1205 | prudvi |
+----+------+--------+

PrintSchema Yöntemini Kullanın

DataFrame'in Yapısını (Şema) görmek istiyorsanız, aşağıdaki komutu kullanın.

scala> dfs.printSchema()

Output

root
   |-- age: string (nullable = true)
   |-- id: string (nullable = true)
   |-- name: string (nullable = true)

Seçme Yöntemini Kullan

Getirmek için aşağıdaki komutu kullanın nameDataFrame'den üç sütun arasındaki sütun.

scala> dfs.select("name").show()

Output - değerlerini görebilirsiniz. name sütun.

<console>:22, took 0.044023 s
+--------+
|  name  |
+--------+
| satish |
| krishna|
| amith  |
| javed  |
| prudvi |
+--------+

Yaş Filtresini Kullan

Yaşı 23'ten büyük (yaş> 23) çalışanları bulmak için aşağıdaki komutu kullanın.

scala> dfs.filter(dfs("age") > 23).show()

Output

<console>:22, took 0.078670 s
+----+------+--------+
|age | id   | name   |
+----+------+--------+
| 25 | 1201 | satish |
| 28 | 1202 | krishna|
| 39 | 1203 | amith  |
+----+------+--------+

GroupBy Yöntemini Kullan

Aynı yaştaki çalışanların sayısını saymak için aşağıdaki komutu kullanın.

scala> dfs.groupBy("age").count().show()

Output - iki çalışan 23 yaşında.

<console>:22, took 5.196091 s
+----+-----+
|age |count|
+----+-----+
| 23 |  2  |
| 25 |  1  |
| 28 |  1  |
| 39 |  1  |
+----+-----+

SQL Sorgularını Programlı Olarak Çalıştırma

Bir SQLContext, uygulamaların SQL işlevlerini çalıştırırken programlı olarak SQL sorgularını çalıştırmasını sağlar ve sonucu bir DataFrame olarak döndürür.

Genel olarak, SparkSQL arka planda mevcut RDD'leri DataFrame'lere dönüştürmek için iki farklı yöntemi destekler -

Sr. Hayır Yöntemler ve Açıklama
1 Şemayı Yansıma Kullanarak Çıkarma

Bu yöntem, belirli nesne türlerini içeren bir RDD'nin şemasını oluşturmak için yansıma kullanır.

2 Şemayı Programlı Olarak Belirtme

DataFrame oluşturmanın ikinci yöntemi, bir şema oluşturmanıza ve ardından bunu mevcut bir RDD'ye uygulamanıza olanak tanıyan programlı arabirimdir.

Bir DataFrame arayüzü, farklı DataSources'in Spark SQL üzerinde çalışmasına izin verir. Geçici bir tablodur ve normal bir RDD olarak çalıştırılabilir. Bir DataFrame'i tablo olarak kaydetmek, verileri üzerinde SQL sorguları çalıştırmanıza olanak tanır.

Bu bölümde, farklı Spark DataSources kullanarak veri yükleme ve kaydetme için genel yöntemleri açıklayacağız. Daha sonra, yerleşik veri kaynakları için mevcut olan belirli seçenekleri ayrıntılı olarak tartışacağız.

SparkSQL'de, bazıları aşağıda listelenen farklı veri kaynakları türleri vardır -

Sr. Hayır Veri kaynakları
1 JSON Veri Kümeleri

Spark SQL, bir JSON veri kümesinin şemasını otomatik olarak yakalayabilir ve bunu DataFrame olarak yükleyebilir.

2 Kovan Tabloları

Hive, Spark kitaplığıyla birlikte SQLContext'ten miras alınan HiveContext olarak gelir.

3 Parke Dosyaları

Parke, birçok veri işleme sistemi tarafından desteklenen sütunlu bir formattır.