专栏首页数据之美windows 安装 spark 及 pycharm 调试 TopN 实例

windows 安装 spark 及 pycharm 调试 TopN 实例

首先声明本文搭建的环境为:windows8.1 + spark1.6.0 + python2.7 + jdk8,spark on windows 对 windows及python版本不怎么挑,但是对 spark 版本要求极其苛刻,比如 spark1.6.1 就无法运行。

1、安装 jdk

安装spark第一步就是安装jdk(无论windows还是linux),spark执行依赖jdk。在oracle官网上下载jdk,这里我选择的是8u74 windows x64版本,你也可以根据自己的需求下载,jdk的安装在此不表,无非就是下一步,选安装路径什么的。

关于具体的 jdk path 怎么设置可以参考 hadoop on windows 这个系列,在此不再赘述:

http://my.oschina.net/leejun2005/blog?catalog=3609138

2、安装spark

在Apache Spark™官方网站下载spark,选择spark-1.6.0-bin-hadoop2.6.tgz。

添加spark环境变量,在PATH后面追加: %SPARK_HOME%\bin %SPARK_HOME%\sbin

windows 环境下的spark搭建完毕!!!

注意此处有坑:

Failed to locate the winutils binary in the hadoop binary path java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.

spark虽然支持standalone模式,并且不依赖hadoop。但是在windows环境下还是需要hadoop的这个winutils.exe。因此需要下载2.6版本匹配的winutils.exe. 可以google "hadoop.dll 2.6" 或在此下载(hadoop dll 2.6.0 winutils.exe,epclipse插件),将下载后的文件覆盖至hadoop的bin目录(没有自己建个目录设置相应hadoop环境变量即可)。

3、搭建 pyspark 开发环境

spark支持scala、python和java,由于对python的好感多于scala,因此开发环境是Python。 下面开始搭建python环境:

2.7或3.5均可,安装过程在此不表,安装完成后在环境变量里添加PYTHONPATH,这一步很重要:

如果配置正确,打开python自带的IDE,输入以下代码,然后等待连接成功的消息即可:

from pyspark import SparkConf, SparkContext 
conf = SparkConf().setMaster("local").setAppName("MY First App") 
sc = SparkContext(conf = conf)

也可以手动启动测试下:

spark-class.cmd org.apache.spark.deploy.master.Master
spark-class.cmd org.apache.spark.deploy.worker.Worker spark://localhost:7077

4、SPARK分析CSDN密码库常用密码 TOP10

# coding=utf-8
# 测试utf-8编码
from __future__ import division
import decimal
from pyspark import SparkConf, SparkContext, StorageLevel

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

conf = SparkConf().setMaster("local").setAppName("CSDN_PASSWD_Top10")
sc = SparkContext(conf=conf)

file_rdd = sc.textFile("H:\mysql\csdn_database\www.csdn.net.sql")
passwds = file_rdd.map(lambda line: line.split("#")[1].strip()).map(lambda passwd: (passwd, 1)).persist(
    storageLevel=StorageLevel.MEMORY_AND_DISK_SER)
passwd_nums = passwds.count()
top10_passwd = passwds.reduceByKey(lambda a, b: a + b).sortBy(lambda item: item[1], ascending=False).take(10)
for item in top10_passwd:
    print item[0] + "\t" + str(item[1]) + "\t" + str(round(decimal.Decimal(item[1] / passwd_nums), 4) * 100) + "%"


# 123456789       235037  3.66%
# 12345678        212761  3.31%
# 11111111        76348   1.19%
# dearbook        46053   0.72%
# 00000000        34953   0.54%
# 123123123       20010   0.31%
# 1234567890      17794   0.28%
# 88888888        15033   0.23%
# 111111111       6995    0.11%
# 147258369       5966    0.09%

# 最后来验证一下数据:
# 数据量:650w 记录,pyspark 耗时 3分54秒,机器配置:i5 cpu,4G MEM,250G SSD,win8.1 操作系统,python 2.7.11
# awk -F"#" 'a[$2]++{for(i in a)print i"\t"a[i]}' www.csdn.net.sql|sort -k2nr|head -10
# cygwin 下性能太差,等待半小时无结果,Kill
# grep -F '# 123456789 #' www.csdn.net.sql|wc -l
# 235012
# awk -F'#' '{print $2}' www.csdn.net.sql|grep -P '\s+123456789\s+'|wc -l
# 235033
# awk -F'#' '{print $2}' www.csdn.net.sql|grep -E '^123456789$'|wc -l
# 0
# awk -F'#' '{print $2}' www.csdn.net.sql|grep -E ' 123456789$'|wc -l
# 5
# awk -F'#' '{print $2}' www.csdn.net.sql|grep -E '^123456789 '|wc -l
# 0

refer:

[1] Spark 入门(Python、Scala 版)

http://my.oschina.net/leejun2005/blog/411605

[2] Spark Streaming Programming Guide

http://spark.apache.org/docs/latest/streaming-programming-guide.html

[3] 如何在windows安装部署spark 求大神们的告知...?

https://www.zhihu.com/question/35973656

[4] spark在windows下的安装

http://www.cnblogs.com/harrychinese/p/spark_install_on_windows.html

http://nishutayaltech.blogspot.com/2015/04/how-to-run-apache-spark-on-windows7-in.html

http://bbs.csdn.net/topics/391835718

http://stackoverflow.com/questions/32948743/cant-start-apache-spark-on-windows-using-cygwin

[5] Spark本地模式运行

http://blog.javachen.com/2015/03/30/spark-test-in-local-mode.html

[6] Spark编程指南笔记

http://blog.javachen.com/2015/02/03/spark-programming-guide.html

[7] Spark RDD API详解(一) Map和Reduce

https://www.zybuluo.com/jewes/note/35032

[8] Spark算子系列文章

http://lxw1234.com/archives/2015/07/363.htm

     spark中的action和transformation

http://blog.csdn.net/egraldloi/article/details/16343733

[9] Spark性能优化指南——基础篇

http://tech.meituan.com/spark-tuning-basic.html

[10] Spark性能优化指南——高级篇

http://tech.meituan.com/spark-tuning-pro.html

[11] Spark性能优化——和shuffle搏斗

http://bit.ly/28Voqba

[12] Spark数据分析实战:大型活动大规模人群的检测和疏散

http://bit.ly/295o0Po

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spark是否可以完全取代Hadoop

    谈到大数据,相信大家对Hadoop和Apache Spark这两个名字并不陌生。然而,最近业界有一些人正在大张旗鼓的宣扬Hadoop将死,Spark将立。他们究...

    企鹅号小编
  • 在统一的分析平台上构建复杂的数据管道

    在Quora上,大数据从业者经常会提出以下重复的问题:什么是数据工程(Data Engineering)? 如何成为一名数据科学家(Data Scientist...

    仁梓
  • Apache Spark中的决策树

    原文地址:https://dzone.com/articles/decision-trees-in-apache-spark

    人工智能资讯小编
  • 如何设计企业级大数据分析平台?

    传统企业的OLAP几乎都是基于关系型数据库,在面临“大数据”分析瓶颈,甚至实时数据分析的挑战时,在架构上如何应对?本文试拟出几个大数据OLAP平台的设计要点,...

    企鹅号小编
  • Apache Spark 2.0预览:机器学习模型持久性

    以上所有应用场景在模型持久性、保存和加载模型的能力方面都更为容易。随着Apache Spark 2.0即将发布,Spark的机器学习库MLlib将在DataFr...

    人工智能资讯小编
  • 大规模异常滥用检测:基于局部敏感哈希算法——来自Uber Engineering的实践

    Uber 的全球用户每天会产生500万条行程,保证数据的准确性至关重要。如果所有的数据都得到有效利用,t通过元数据和聚合的数据可以快速检测平台上的滥用行为,如垃...

    fly2wind
  • 读书 | Learning Spark (Python版) 学习笔记(一)----RDD 基本概念与命令

    今天恰逢世界读书日,正好分享一篇CDA美女作者的读书笔记。C君提醒:好读书,都好书,每天都是读书日~ 《Learning Spark》这本书算是Spark入门的...

    CDA数据分析师
  • Eclipse+Spark搭建源码分析环境问题分析

    Scala IDE complains about ‘... is cross-compiled with an incompatible version of...

    用户1221057
  • MLlib中的随机森林和提升方法

    本帖是与来自于Origami Logic 的Manish Amd共同撰写的。

    人工智能资讯小编
  • Zzreal的大数据笔记-SparkDay01

    Spark 一、Spark概述 1、什么是Spark Spark是一种快速、通用、可扩展的大数据分析引擎。它集批处理、实时流处理、交互式查询和图计算于一体,避免...

    企鹅号小编

扫码关注云+社区

领取腾讯云代金券