文档章节

windows 安装 spark 及 PyCharm IDEA 调试 TopN 实例

大数据之路
 大数据之路
发布于 2012/06/28 18:40
字数 1012
阅读 1090
收藏 3

首先声明本文搭建的环境为: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  winutils.exe,GitHub各种版本都有), 将下载后的文件覆盖至hadoop的bin目录(没有的话需要建个目录,并设置相应hadoop环境HADOOP_HOME及PATH环境变量)。

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

5、Scala-Shell 版本

代码如下:

C:\Users\username>spark-shell

scala> val textFile = spark.read.textFile("C:\\Users\\username\\Desktop\\parse_slow_log.py")
textFile: org.apache.spark.sql.Dataset[String] = [value: string]

scala> textFile.count()
res0: Long = 156

scala> textFile.first()
res1: String = # encoding: utf-8

scala> val linesWithSpark = textFile.filter(line => line.contains("Spark"))
linesWithSpark: org.apache.spark.sql.Dataset[String] = [value: string]

scala> textFile.filter(line => line.contains("Spark")).count()
res2: Long = 0

scala> textFile.map(line => line.split(" ").size).reduce((a, b) => if (a > b) a else b)
res3: Int = 27

scala> val wordCounts = textFile.flatMap(line => line.split(" ")).groupByKey(identity).count()
wordCounts: org.apache.spark.sql.Dataset[(String, Long)] = [value: string, count(1): bigint]

scala> wordCounts.collect()
res4: Array[(String, Long)] = Array((self.slowlog,1), (import,3), (False,,1), (file_name,,1), (flag_word,3), (MySQL,1), (else,1), (*,2), (slowlog,1), (default=script_path),1), (0,4), ("",2), (-d,1), (__auther,1), (for,5...
scala>

6、基于idea 和maven 的 spark开发环境搭建

完整教程:https://blog.csdn.net/u012373815/article/details/53266301

Intellij Idea搭建Spark开发环境:https://blog.csdn.net/u012877472/article/details/51000690

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

© 著作权归作者所有

大数据之路
粉丝 1611
博文 514
码字总数 334218
作品 0
武汉
架构师
私信 提问
pycharm搭建spark环境

pycharm搭建spark环境 安装python环境 安装spark环境 官网下载 包,解压即可 配置 配置python-spark环境 将spark目录 下的 解压 将解压后的 放到 python 目录 下 提示:python 和 spark 的安...

jackmanwu
2018/08/20
496
0
windows端部署python开发环境

应用场景 在本地windows端,想开发python代码,或者运行python代码,需要在windows端安装python开发环境,来测试python代码,学习python。 操作步骤 1. 首先安装jdk1.8 配置环境变量等 jdk1...

wsc449
2017/11/21
0
0
pycharm pyspark 配置

1 、安装了pycharm,下载spark(官网下载,我下的是spark-2.1.1-bin-hadoop2.7.tgz,解压缩后为文件夹spark-2.1.1-bin-hadoop2.7,我将文件放在了/Applications/spark/下,这个文件夹里面有p...

张欢19933
2018/05/09
274
0
PyCharm搭建Spark开发环境

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 https://blog.csdn.net/mudooo/article/details/94830879 1.安装好JDK 下载并安装好jdk-12....

白蛇仙人
09/01
0
0
用到pyspark跑程序,错误不断,自己琢磨不出来,想请大家给点解决办法或者思路

程序地址:https://github.com/kdeyev/SeisSpark 安装了Python2.7和3.6,pycharm,spark本地环境(windows系统) 主程序代码如下: 运行之后老出现如下界面: 输入之后重复输入,陷入死循环。 ...

爆炸头CC
2018/07/25
344
1

没有更多内容

加载失败,请刷新页面

加载更多

字节序转换详解

在跨平台和网络编程中我们经常会提到网络字节序和主机字节序,如果没有正确对两者进行转换,从而导致两方产生了不同的解释,就会出现意想不到的bug。 目录 0x01 概念 0x02 分类 0x03 两种字节...

无心的梦呓
27分钟前
4
0
干货 | AI人脸识别之人脸搜索

本文档将利用京东云AI SDK来实践人脸识别中的人脸搜索功能,主要涉及到分组创建/删除、分组列表获取、人脸创建/删除、人脸搜索,本次实操的最终效果是:创建一个人脸库,拿一张图片在人脸库中...

京东云技术新知
31分钟前
4
0
【swiper】 滑块组件说明

本文转载于:专业的前端网站➣【swiper】 滑块组件说明 swiper 滑块视图容器,其原型如下: 1 <swiper 2 indicator-dots="[Boolean]" 3 indicator-color="[Color]" 4 indicator-act......

前端老手
41分钟前
4
0
堆排序算法

《Java算法总纲目录》 1、定义 由下图(网上找的),堆排序类似这种,把最大的数字放到最下面的最右面位置,然后把第二大的数字放到最下层的最右面倒数第二个位置,依此类推,如下: 2、代码...

木九天
44分钟前
5
0
框架和库的区别

框架和库的区别 框架:是一套完整的解决方案;对项目的侵入性较大,项目如果需要更换框架,则需要重新架构整个项目。 node 中的 express; 库(插件):提供某一个小功能,对项目的侵入性较小...

庭前云落
48分钟前
5
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部