Я настоятельно рекомендую использовать Dataframes / DataSets. Не только потому, что их проще использовать и ими манипулировать, но и обеспечивают серьезное улучшение производительности. Даже искровой документ рекомендует то же самое.
Вот ваш код кадра данных: -
val spark = SparkSession.builder.master("local[*]").getOrCreate
Это создает SparkSession
, который является точкой входа в приложение.
Теперь давайте прочитаем файлы ваших сотрудников и отделов.
val employeeDF = spark.read.format("csv").option("header","true").load("/path/to/employee/file")
val deptDF = spark.read.format("csv").option("header","true").load("/path/to/dept/file")
Теперь присоединиться довольно просто. Оператор ниже создаст кадр данных, который будет результатом внутреннего соединения между employeeDF
и deptDF
в столбце deptno
val joinedDF = employeeDF.join(deptDF,Seq("deptno"))
Теперь вы можете использовать joinedDF
для получения результатов.
val countByDept = joinedDF.groupBy($"deptno").count
//countByDept.show to display the results
val top2Dept = joinedDF.groupBy($"dname").count.orderBy($"count".desc).limit(2)
//top2Dept.show to display the results
Надеюсь, это поможет вам начать путешествие с Spark DataFrames и DataSets.