我是Spark Scala的新手,想要执行以下任务:
将结果写入文本文件,即采用以下格式:
Column Name |Value | Occurrences
Col1 |Test | 12
Col2 |123 | 15
我使用的是Spark 1.6,而不是Spark 2.0。
非常感谢您提供任何帮助。
干杯, 的Matthias
答案 0 :(得分:0)
希望这会对你有所帮助。 让我用一个例子来解释。
我有一个文件,users.txt,内容如下:
1 abc@test.com EN US
2 xyz@test2.com EN GB
3 srt@test3.com FR FR
代码:
var fileRDD=sc.textFile("users.txt")
case class User(ID:Int,email:String,lang:String,country:String)
var rawRDD=fileRDD.flatMap(_.split("\t")).map(_.split(" "))
var userRDD=rawRDD.map(u=>User(u(0).toInt,u(1).toString,u(2).toString,u(3).toString))
userDF.registerTempTable("user_table")
sqlContext.sql("select * from user_table").show()
+---+-------------+----+-------+
| ID| email|lang|country|
+---+-------------+----+-------+
| 1| abc@test.com| EN| US|
| 2|xyz@test2.com| EN| GB|
| 3|srt@test3.com| FR| FR|
+---+-------------+----+-------+
var emailCount=sqlContext.sql("select 'email' as col,email as value, count(email) as occur from user_table group by email")
var langCount=sqlContext.sql("select 'lang' as col,lang as value, count(lang) as occur from user_table group by lang")
emailCount.unionAll(langCount).show()
+-----+-------------+-----+
| col| value|occur|
+-----+-------------+-----+
|email|srt@test3.com| 1|
|email|xyz@test2.com| 1|
|email| abc@test.com| 1|
| lang| EN| 2|
| lang| FR| 1|
+-----+-------------+-----+