使用Scala运行字数统计并在HDInsight上引发火花


以前,我们尝试用一个Scala and Spark进场。

下一步是使用电光、hdfs和scala将我们的解决方案部署到hdInsight。

我们将调配一个电光群集:

screenshot-from-2017-02-22-23-12-22

由于我们要使用HDInsight,因此我们可以利用HDFS,从而使用Azure存储:

screenshot-from-2017-02-22-23-12-59

然后,我们选择我们的实例类型:

screenshot-from-2017-02-22-23-13-21

我们已经做好了打造电光集群的准备:

screenshot-from-2017-02-22-23-13-55

我们的数据将上传到HDFS文件系统。

为此,我们将文本文件上载到与HDFS集成的Azure存储帐户。

有关使用Azure CLI管理存储帐户的更多信息,请查看官方guide。任何文本文件都可以工作。

azure storage blob upload mytextfile.txt sparkclusterscala example/data/mytextfile.txt 

由于我们使用的是JDFS,因此我们将对原始脚本进行一些更改:

val text = sc.textFile("wasb:///example/data/mytextfile.txt")
val counts = text.flatMap(line => line.split(" ")).map(word => (word,1)).reduceByKey(_+_)
counts.collect


然后,我们可以使用SSH将Scala类上传到头节点:

scp WordCountscala.scala demon@{your cluster}-ssh.azurehdinsight.net:/home/demo/WordCountscala.scala 

同样,为了运行脚本,事情非常简单:

spark-shell -i WordCountscala.scala 

一旦任务完成,我们就会看到电光提示符。此外,我们现在可以将结果保存到HDFS文件系统。

<scala> counts.saveAsTextFile("/wordcount_results")          

快速检查一下。

hdfs dfs -ls
/wordcount_results/
hdfs dfs -text /wordcount_results/part-00000

就这样!