2017-08-09 34 views
-2

获取数据我有2个的CSV文件。从两个使用CSV火花(JAVA)

Employee.csv与架构

EmpId Fname 
1  John  
2  Jack  
3  Ram 

和第二CSV文件 Leave.csv

EmpId LeaveType Designation 
1  Sick    SE 
1  Casual   SE 
2  Sick    SE 
3  Privilege   M 
1  Casual   SE 
2  Privilege  SE 

现在我想以JSON数据作为

EmpID-1 
Sick : 2 
Casual : 2 
Privilege : 0 

使用Java中的火花

+1

您已经表达你的愿望,但你忘了问一个问题。我们在这里做家庭作业,而是帮助解决具体问题。 –

+0

到目前为止您尝试过什么? –

回答

0

分组由列“LeaveType”和他们perfoming 计数

import org.apache.spark.sql.functions.count 
val leaves = ??? // Load leaves 
leaves.groupBy(col("LeaveType")).agg(count(col("LeaveType").as("total_leaves")).show() 
+0

我们能做到这一点,而无需使用星火的Sql –

+0

是的,原理是一样的。而不是使用列键使用键值对 – aclokay

+0

你可以请帮我详细。我对Spark很新。 –

0

我不熟悉Java语法,但如果你不希望使用数据框API,你可以做这样的事情在斯卡拉,

val rdd= sc.textfile("/path/to/leave.csv").map(_.split(",")).map(x=>((x(0),x(1),x(2)),1)).reduceByKey(_+_) 

现在你需要使用一些外部API像GSON这个RDD的每个元素转换为所需的JSON格式。这个RDD的每个元素都是一个Tuple4,其中有(EMPID,leaveType,型号,Countofleaves)

让我知道,如果这有助于,干杯。

+0

我不知道scala:P其实我想在java本身中使用它 –

+0

它们都是基于JVM的语言,我确信上面的代码片段会给你一些我正在做的事情。 –