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##