Topik ini menjelaskan operasi dasar pada Spark shell dan dataset terdistribusi yang tangguh (RDD).
Memulai Spark Shell
Spark shell adalah alat yang kuat untuk analisis data interaktif serta menyediakan cara sederhana untuk mempelajari API. Spark shell mendukung Scala dan Python.
Untuk memulai Spark shell, ikuti langkah-langkah berikut:
Login ke node master kluster melalui SSH. Untuk informasi selengkapnya, lihat Login ke kluster.
Jalankan perintah berikut untuk memulai Spark shell:
spark-shellDi Spark shell, SparkContext telah dibuat secara otomatis dalam variabel bernama sc. SparkContext yang dibuat secara manual tidak berlaku. Anda dapat menggunakan parameter
--masteruntuk menentukan node master tempat SparkContext terhubung dan parameter--jarsuntuk menentukan paket JAR yang ditambahkan ke classpath. Pisahkan beberapa paket JAR dengan koma (,). Untuk informasi selengkapnya mengenai parameter tersebut, jalankan perintahspark-shell --help.
Operasi RDD Dasar
Spark menyediakan RDD. RDD adalah kumpulan elemen yang dapat dioperasikan secara paralel. Anda dapat membuat RDD menggunakan koleksi yang diparalelkan atau dataset eksternal seperti sistem file bersama, Hadoop Distributed File System (HDFS), HBase, atau dataset eksternal lainnya yang menyediakan Hadoop InputFormat.
Kode contoh:
Buat RDD menggunakan koleksi terparalelisasi
val data = Array(1, 2, 3, 4, 5) val distData = sc.parallelize(data)Buat RDD menggunakan dataset eksternal
val distFile = sc.textFile("data.txt")
Operasi RDD terbagi menjadi dua jenis: transformasi dan aksi. Transformasi tidak dieksekusi secara langsung, sedangkan aksi memicu eksekusi.
Transformasi
Operasi
Deskripsi
map()Menerapkan fungsi ke setiap elemen RDD dan mengembalikan hasilnya sebagai RDD baru.
flatMap()Menerapkan fungsi ke setiap elemen RDD, meratakan RDD, lalu mengembalikan hasilnya sebagai RDD baru.
filter()Memilih elemen-elemen RDD yang menghasilkan nilai true dari suatu fungsi, dan mengembalikan hasilnya sebagai RDD baru.
distinct()Mengembalikan elemen unik dari RDD tanpa menggunakan fungsi.
union()Menggabungkan elemen-elemen dari dua RDD dan mengembalikan hasilnya sebagai RDD baru.
intersection()Mengembalikan elemen yang muncul di kedua RDD.
subtract()Menghapus elemen yang muncul di kedua RDD.
cartesian()Menghasilkan Produk Kartesius dari dua RDD.
Aksi
Operasi
Deskripsi
collect()Mengembalikan semua elemen RDD.
count()Mengembalikan jumlah elemen RDD.
countByValue()Mengembalikan jumlah kemunculan setiap elemen dalam RDD.
reduce()Mengagregasi semua elemen dalam RDD, misalnya menghitung jumlah total.
fold(0)(func)Mirip dengan
reduce(), tetapi menggunakan nilai nol sebagai nilai awal.aggregate(0)(seqOp,combop)Mirip dengan
reduce(), tetapi tipe data RDD yang dikembalikan berbeda dari RDD aslinya.foreach(func)Menerapkan fungsi tertentu ke setiap elemen RDD.
Mulai menggunakan contoh Spark shell example
Pertama, RDD dibuat dengan membaca file teks dari sistem penyimpanan eksternal. Operator map digunakan untuk menghitung panjang setiap baris dalam file teks, sedangkan operator reduce digunakan untuk menjumlahkan panjang tersebut. Dengan demikian, Anda dapat memperoleh panjang total semua baris dalam file teks.
Login ke node master kluster melalui SSH. Untuk informasi selengkapnya, lihat Login ke kluster.
Buat file data.txt dan unggah ke HDFS.
Konten file data.txt dalam contoh ini ditunjukkan di bawah ini.
Hello Spark This is a test file 1234567890Anda dapat mengunggah data.txt ke HDFS menggunakan perintah berikut.
hadoop fs -put data.txt /user/root/Mulai Spark shell.
spark-shellJalankan perintah berikut untuk menghitung panjang total karakter semua baris dalam file data.txt.
val lines = sc.textFile("data.txt") val lineLengths = lines.map(s => s.length) val totalLength = lineLengths.reduce((a, b) => a + b)