python虚拟环境可以运行pyspark_Spark 使用Python在pyspark中运行简单wordcount

0.参考文章

1.pyspark练习

进入到Spark目录,

1.1 修改log4j.properties

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

1

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

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

1

2

3

4

5

6

7

8

9

10

11

1

2

3

4

5

6

7

8

9

10

11# 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决定连接到哪儿

接下来:

1

2

1

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

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

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

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

会报错:

1

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

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

1

2

3

1

2

3hadoop fs -put /user/root/README.md input

# 然后进入pyspark

textFile = sc.textFile("hdfs://manage02:9000/user/root/README.md")

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

1

2

3

1

2

3textFile("/my/directory") textFile("/my/directory/*.txt") textFile("/my/directory/*.gz")

1

2

3

4

5

6

1

2

3

4

5

6textFile.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模块

1

2

3

1

2

3from pyspark import SparkContext, SparkConf

...

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值