Учебное пособие по Spark Java: универсальное решение для Spark на Java
[*]
Ява является эффективным языком программирования в разработке программного обеспечения, а Scala является доминирующим языком программирования, используемым в разработке больших данных. Сотрудничество обоих может привести к мощной комбинации. В этом Учебник по Spark Java, мы будем работать с программами Spark в среде Java.
Что такое Spark-Java?
Проще говоря, Spark-Java — это комбинированный подход к программированию. Большие данные проблемы. Искра написано на Ява а также Скала использует JVM для компиляции кода, написанного на Scala. Spark поддерживает множество языков программирования, таких как свинья, Улей, Скала и многие другие. Scala — один из самых известных языков программирования, когда-либо созданных для приложений Spark.
Потребность в Spark-Java
Большинство разработчиков программного обеспечения чувствуют себя комфортно, работая с Ява на уровне предприятия, где они вряд ли предпочитают Scala или любой другой тип языков. Spark-Java — это один из таких подходов, при котором разработчики программного обеспечения могут легко запускать все программы и приложения Scala в среде Java.
Теперь у нас есть краткое представление о Spark Java. Давайте теперь перейдем к следующему этапу, где мы узнаем о настройке среды для Spark Java. Я выстроил процедуру в виде шагов.
Настройка среды Spark-Java
Шаг 1:
Шаг 2:
Шаг 3:
Шаг 4:
Шаг 5:
Шаг 6:
Шаг 7:
- Установите дом и путь для следующего:
- Ява
- Установите новый Java_Home, как показано ниже.
- Точно так же установите путь для Java Home, отредактировав переменные пути.
- Хадуп
- Установите новый Hadoop_Home, как показано ниже.
- Similarly, Set Path for Hadoop Home by editing Path variables
- Искра
- Установите новый Spark_Home, как показано ниже.
- Similarly, Set Path for Spark Home by editing Path variables
- Мавен
- Установите новый Maven_Home, как показано ниже.
- Similarly, Set Path for Maven Home by editing Path variables
- Скала
- Установите новый Scala_Home, как показано ниже.
- Similarly, Set Path for Scala Home by editing Path variables
Теперь вы выполнили все требования для запуска Apache Spark на Java. Давайте попробуем пример программы Spark на Java.
Примеры в Spark-Java
Прежде чем мы приступим к фактическому выполнению примера программы Spark в среде Java, нам необходимо выполнить некоторые предварительные условия, которые я упомяну ниже в качестве шагов для лучшего понимания процедуры.
Шаг 1:
- Откройте командную строку и запустите Spark в командной строке в качестве мастера.
Шаг 2:
- Откройте новую командную строку и снова запустите Spark в командной строке, на этот раз в качестве рабочего вместе с IP-адресом мастера.
- IP-адрес доступен по адресу Localhost:8080.
Шаг 3:
- Откройте новую командную строку, и теперь вы можете запустить оболочку Spark вместе с IP-адресом мастера.
Шаг 4:
- Теперь вы можете открыть Eclipse Enterprise IDE, настроить свое рабочее место и начать работу над своим проектом.
Шаг 5:
- Установите природу Scala в Eclipse IDE и создайте новый проект maven.
- Во-первых, мы начнем с POM.XML
- Следующий код представляет собой файл pom.xml.
<project xmlns="
xmlns:xsi="
xsi:schemaLocation="
<modelVersion>4.0.0</modelVersion>
<groupId>Edureka</groupId>
<artifactId>ScalaExample</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<!-- -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.12</artifactId>
<version>2.4.2</version>
</dependency>
</dependencies>
</project>
Шаг 6:
- Начните с вашего приложения Scala.
- Следующий код предназначен для файла приложения Scala.
package ScalaExample
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.SQLContext
import org.apache.spark.sql._
import org.apache.spark.sql.types.{StructType, StructField, StringType, IntegerType};
object EdurekaApp {
def main(args: Array[String]) {
val logFile = "C:/spark/README.md" // Should be some file on your system
val conf = new SparkConf().setAppName("EdurekaApp").setMaster("local[*]")
val sc = new SparkContext(conf)
val spark = SparkSession.builder.appName("Simple Application").getOrCreate()
val logData = spark.read.textFile(logFile).cache()
val numAs = logData.filter(line => line.contains("a")).count()
val numBs = logData.filter(line => line.contains("b")).count()
println(s"Lines with a: $numAs, Lines with b: $numBs")
spark.stop()
}
}
Выход:
Строки с a: 62, Строки с b: 31
Теперь, когда у нас есть краткое представление о Spark Java, давайте перейдем к нашему варианту использования академической успеваемости учащихся, чтобы лучше изучить Spark Java.
Результаты учащихся на экзамене: Вариант использования
Подобно нашему предыдущему примеру, давайте настроим наши предварительные условия, а затем начнем с нашего Вариант использования. Наш вариант использования будет примерно Выступление студентов на экзаменах по нескольким важным предметам.
Вот как выглядит наш код, теперь давайте выполним одну операцию за нашим вариантом использования.
- Следующий код представляет собой файл pom.xml.
<project xmlns="
xmlns:xsi="
xsi:schemaLocation="
<modelVersion>4.0.0</modelVersion>
<groupId>ScalaExample3</groupId>
<artifactId>Edureka3</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<!-- -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.12</artifactId>
<version>2.4.3</version>
</dependency>
<!-- -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.12</artifactId>
<version>2.4.3</version>
</dependency>
<!-- -->
<dependency>
<groupId>com.databricks</groupId>
<artifactId>spark-csv_2.11</artifactId>
<version>1.5.0</version>
</dependency>
</dependencies>
</project>
- Следующий код предназначен для файла приложения Scala.
package ScalaExample
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.SQLContext
import org.apache.spark.sql._
import org.apache.spark.sql.types.{StructType, StructField, StringType, IntegerType};
object EdurekaApp {
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("EdurekaApp3").setMaster("local[*]")
val sc = new SparkContext(conf)</pre>
val sqlContext = new SQLContext(sc)
val spark = SparkSession.builder.appName("Simple Application").getOrCreate()
val customizedSchema = StructType(Array(StructField("gender", StringType, true),StructField("race", StringType, true),StructField("parentalLevelOfEducation", StringType, true),StructField("lunch", StringType, true),StructField("testPreparationCourse", StringType, true),StructField("mathScore", IntegerType, true),StructField("readingScore", IntegerType, true),StructField("writingScore", IntegerType, true)))
val pathToFile = "C:/Users/Ravikiran/Downloads/students-performance-in-exams/StudentsPerformance.csv"
val DF = sqlContext.read.format("com.databricks.spark.csv").option("header", "true").schema(customizedSchema).load(pathToFile)
print("We are starting from here...!")
DF.rdd.cache()
DF.rdd.foreach(println)
println(DF.printSchema)
DF.registerTempTable("Student")
sqlContext.sql("SELECT * FROM Student").show()
sqlContext.sql("SELECT gender, race, parentalLevelOfEducation, mathScore FROM Student WHERE mathScore > 75").show()
sqlContext.sql("SELECT race, count(race) FROM Student GROUP BY race").show()
sqlContext.sql("SELECT gender, race, parentalLevelOfEducation, mathScore, readingScore FROM Student").filter("readingScore>90").show()
sqlContext.sql("SELECT race, parentalLevelOfEducation FROM Student").distinct.show()
sqlContext.sql("SELECT gender, race, parentalLevelOfEducation, mathScore, readingScore FROM Student WHERE mathScore> 75 and readingScore>90").show()
sqlContext<span>("SELECT gender, race, parentalLevelOfEducation, mathScore, readingScore").dropDuplicates().show()</span>
println("We have finished here...!")
spark.stop()
}
}
Вывод для операторов SparkSQL, выполненных выше, выглядит следующим образом:
- Распечатка данных с помощью функции println.
DF.rdd.foreach(println)
- Печать схемы, которую мы разработали для наших данных.
println(DF.printSchema)
- Печать нашего Dataframe с помощью команды select.
sqlContext.sql("SELECT * FROM Student").show()
- Применение функции ГДЕ для печати данных учащихся, набравших более 75 баллов по математике.
sqlContext.sql("SELECT gender, race, parentalLevelOfEducation, mathScore FROM Student WHERE mathScore > 75").show()
- Использование операции «Группировать по и подсчет», чтобы узнать количество студентов в каждой группе.
sqlContext.sql("SELECT race, count(race) FROM Student GROUP BY race").show()
- Использование операции фильтрации, чтобы найти учеников, которые оказались лучшими в чтении.
sqlContext.sql("SELECT gender, race, parentalLevelOfEducation, mathScore, readingScore FROM Student").filter("readingScore>90").show()
- Использование функции Distinct, чтобы узнать различные значения в наших данных.
sqlContext.sql("SELECT race, parentalLevelOfEducation FROM Student").distinct.show()
- Использование функции И для сравнения нескольких объектов.
sqlContext.sql("SELECT gender, race, parentalLevelOfEducation, mathScore, readingScore FROM Student WHERE mathScore> 75 and readingScore>90").show()
- Использование функции DropDuplicates для удаления повторяющихся записей.
sqlContext("SELECT gender, race, parentalLevelOfEducation, mathScore, readingScore").dropDuplicates().show()
Итак, на этом мы подошли к концу этой статьи Spark Java Tutorial. Я надеюсь, что мы пролили свет на ваши знания о Spark, Java и Eclipse, их функциях и различных типах операций, которые можно выполнять с их помощью.