2017-05-15 81 views
-2

下面是我写的一个示例spark sql,用于获取在代理机构中注册的男性和女性的计数。我使用sql生成输出, 有没有办法做类似的事情使用数据框只有不是SQL。使用Dataframe代替spark sql进行数据分析

val districtWiseGenderCountDF = hiveContext.sql(""" 
                | SELECT District, 
                |  count(CASE WHEN Gender='M' THEN 1 END) as male_count, 
                |  count(CASE WHEN Gender='F' THEN 1 END) as FEMALE_count 
                | FROM agency_enrollment 
                | GROUP BY District 
                | ORDER BY male_count DESC, FEMALE_count DESC 
                | LIMIT 10""".stripMargin) 
+0

您使用的是什么版本的火花? –

+0

我在Hortonworks沙箱中使用火花2 –

回答

0

星火1.6可以使用旋转+ GROUP BY达到什么样的开始,你想

没有样本数据(和我自己的火花> 1.5的可用性),这里有一个解决方案,应该工作(不测试)

val df = hiveContext.table("agency_enrollment") 
df.groupBy("district","gender").pivot("gender").count 

看到How to pivot DataFrame?一个通用的例子

+0

非常感谢。它为我工作 –