sparkWordCount - juedaiyuer/researchNote GitHub Wiki
#Word Count#
配置master参数,使用n个workder进程本地化运行spark;local[k]应该根据运行机器的CPU核数确定
./bin/pyspark -master local[4]
指定文件到search path,便于import
./bin/pyspark -master local[4] -py-files yourfile.py
##官方文档上的测试##
text_file = sc.textFile("hdfs://...")
counts = text_file.flatMap(lambda line: line.split(" ")) \
.map(lambda word: (word, 1)) \
.reduceByKey(lambda a, b: a + b)
counts.saveAsTextFile("hdfs://...")
##读取本地文件测试##
>>> text_file = sc.textFile("file:///home/juedaiyuer/opensource/hadoop-2.7.3/mytest/mytest.txt")
>>> counts = text_file.flatMap(lambda line: line.split(" ")) \
... .map(lambda word: (word, 1)) \
... .reduceByKey(lambda a, b: a + b)
>>> counts.saveAsTextFile("file:///home/juedaiyuer/opensource/hadoop-2.7.3/mytest/sparktest")
##读取HDFS文件##
登录hadoop主节点将文件上传到HDFS上,然后再从HDFS中读入数据
$ hadoop fs -mkdir /input
hadoop fs -put /yourpath/yourfile input
实际测试,想要把测试后的文件保存在HDFS上,而不是本机位置;输出的位置建立一个新的空文件夹
>>> text_file=sc.textFile("hdfs://localhost:9000/input/mytest.txt")
>>> counts = text_file.flatMap(lambda line: line.split(" ")) \
... .map(lambda word: (word, 1)) \
... .reduceByKey(lambda a, b: a + b)
>>> counts.saveAsTextFile("hdfs://localhost:9000/input/testout")
##spark读取文件##
- 默认是从hdfs读取文件,也可以指定sc.textFile("路径").在路径前面加上hdfs://表示从hdfs文件系统上读
- hdfs默认工作目录为/user/$USER,$USER是当前的登录用户名
- 本地文件读取 sc.textFile("路径").在路径前面加上file:// 表示从本地文件系统读,如file:///home/user/spark/README.md
##source##