Spark 使用Python在pyspark中运行简单wordcount

原创 2015年11月19日 21:49:52

0.参考文章

Spark入门(Python版)
Spark1.0.0 多语言编程之python实现
Spark编程指南(python版)

1.pyspark练习

进入到spark目录,

1.1 修改log4j.properties

Spark(和PySpark)的执行可以特别详细,很多INFO日志消息都会打印到屏幕。开发过程中,这些非常恼人,因为可能丢失Python栈跟踪或者print的输出。为了减少Spark输出 – 你可以设置$SPARK_HOME/conf下的log4j。首先,拷贝一份$SPARK_HOME/conf/log4j.properties.template文件,去掉“.template”扩展名。

cp $SPARK_HOME/conf/log4j.properties.template $SPARK_HOME/conf/log4j.properties

编辑log4.properties,将INFO替换为WARN
替换后如下:

# Set everything to be logged to the console
 log4j.rootCategory=WARN, console
 log4j.appender.console=org.apache.log4j.ConsoleAppender
 log4j.appender.console.target=System.err
 log4j.appender.console.layout=org.apache.log4j.PatternLayout
 log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n
# Settings to quiet third party logs that are too verbose
 log4j.logger.org.eclipse.jetty=WARN
 log4j.logger.org.eclipse.jetty.util.component.AbstractLifeCycle=ERROR
 log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=WARN
 log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=WARN

现在运行pyspark,输出消息将会更简略。
然后采用默认的设置运行pyspark

./bin/pyspark

配置master参数,使用4个Worker线程本地化运行Spark(local[k]应该根据运行机器的CPU核数确定)

./bin/pyspark –master local[4]

增加的–py-files,是将指定的文件加到search path,以便之后import

./bin/pyspark –master local[4] –py-files code.py

MASTER_URL 含义
local 使用一个Worker线程本地化运行Spark(默认
local[k] 使用K个Worker线程本地化运行Spark
local[*] 使用K个Worker线程本地化运行Spark(这里K自动设置为机器的CPU核数)
spark://HOST:PORT 连接到指定的Spark单机版集群(Spark standalone cluster)master。必须使用master所配置的接口,默认接口7077.如spark://10.10.10.10:7077
mesos://HOST:PORT 连接到指定的Mesos集群。host参数是Moses master的hostname。必须使用master所配置的接口,默认接口是5050.
yarn-client 以客户端模式连接到yarn集群,集群位置由环境变量HADOOP_CONF_DIR决定.
yarn-cluster 以集群模式连接到yarn集群,同样由HADOOP_CONF_DIR决定连接到哪儿

接下来:

textFile = sc.textFile("file:///usr/local/cluster/spark/README.md")

如果使用本地文件系统的路径,那么这个文件在工作节点上也应该可以按照这个路径读到。即, 要么把文件copy到所有工作节点,或者使用网络共享之。

Spark默认从HDFS中读取数据,如果输入

textFile = sc.textFile(“./README.md”)

会报错:

Input path does not exist: hdfs://manage02:9000/user/root/README.md

或者:
登录hadoop主节点 将要进行wordcount的文件上传到HDFS上,然后再从HDFS中读入数据。

hadoop fs -put  /user/root/README.md input
# 然后进入pyspark
textFile = sc.textFile("hdfs://manage02:9000/user/root/README.md")

Spark的文件输入方法,可以run在目录,压缩文件上,支持通配符。
如:

textFile("/my/directory")
textFile("/my/directory/*.txt")
textFile("/my/directory/*.gz")
textFile.count()  # textFile返回的每一行的记录,相当于文件行数
textFile.first()
u'# Apache Spark'
linesWithSpark = textFile.filter(lambda line:"Spark" in line) 
# filter方法创建一个新的RDD数据集(包含有'Spark'的行) 
linesWithSpark.count()

2.构建Python-Spark程序

1.加入所需的Spark模块

from pyspark import SparkContext, SparkConf
...

2.创建一个SparkContext对象(在pyspark shell里是自动创建好的)

sc = SparkContext(master, appname)
sc = SparkContext(“local”,”Page Rank”)

pyspark原理简介

这是前段时间在看spark的python支持的时候,简单过了一下pyspark里的python代码,整理了一个大致流程。虽然几乎不会python,但基本上能看懂pyspark是怎么让不同虚拟机之间传输...
  • zbf8441372
  • zbf8441372
  • 2014年07月30日 22:08
  • 18530

pySpark记录

1、combineByKey使用 x = sc.parallelize([('B',1),('B',2),('A',3),('A',4),('A',5)]) createCombiner = (lam...
  • GOGOAWAY
  • GOGOAWAY
  • 2017年02月21日 16:32
  • 2485

pyspark实现Apriori算法、循环迭代、并行处理

from pyspark import SparkContext myDat=[ [ 1, 3, 4,5 ], [ 2, 3, 5 ], [ 1, 2, 3,4, 5 ], [ 2,3,4, 5 ]...
  • o1101574955
  • o1101574955
  • 2016年06月05日 20:40
  • 3158

Spark pyspark package

1. contentsPySpark是Spark的PythonAPI。 公共类: SparkContext: Spark运行的主要集成类。 它负责与Spark集群的connection,并且负责数...
  • power0405hf
  • power0405hf
  • 2015年11月12日 21:52
  • 1502

pyspark 笔记

反向代理的配置 在服务器中做如下配置: server { listen 80;...
  • weimingyu945
  • weimingyu945
  • 2017年09月14日 11:00
  • 630

PySpark内部实现

PySpark实现了Spark对于Python的API, 通过它,用户可以编写运行在Spark之上的Python程序, 从而利用到Spark分布式计算的特点。 基本流程 PySpark...
  • lantian0802
  • lantian0802
  • 2014年07月02日 09:25
  • 7947

【pySpark教程】Introduction & 预备工作(一)

在这个课程中,我们会学习如何编写并且调试Python Spark(pySpark)程序。为了满足大家的需求,我们的软件开发环境是使用Virtual Machine(VM虚拟机)。本文将手把手教你安装该...
  • cyh24
  • cyh24
  • 2016年02月08日 20:13
  • 7589

如何将PySpark导入Python

如何将PySpark导入Python问题1、ImportError: No module named pyspark现象: 已经安装配置好了PySpark,可以打开PySpark交互式界面; 在Pyt...
  • sinat_26599509
  • sinat_26599509
  • 2016年07月13日 10:55
  • 3017

pyspark的使用和操作(基础整理)

Spark框架是使用Scala函数式编程语言开发的,支持Java编程,Java与Scala可以互操作。此外,Spark提供了Python编程接口,Spark使用Py4J实现Python与Java的互操...
  • cymy001
  • cymy001
  • 2017年11月08日 21:44
  • 1103

pyspark写法总结

往hive表中插入数据 法1:dataFrame数据写入hive表 def log2Hive(): log=hiveContext.createDataFrame([{"dt":dt,"type...
  • zhuiqiuuuu
  • zhuiqiuuuu
  • 2017年06月04日 14:48
  • 1326
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spark 使用Python在pyspark中运行简单wordcount
举报原因:
原因补充:

(最多只允许输入30个字)