关闭

spark使用

1863人阅读 评论(0) 收藏 举报

一、基础概念:

 RDD对象:

        spark的核心对象,

       文件等加载均转化为RDD对象(SparkContext.textFile(input_file)  )

 RDD对象属性、方法:

map、reduce、flatmap、reducebykey

二、使用

1.声明:

from pyspark import SparkContext, SparkConf  #pyspark ,python-spark支持


appName = "程序名"   #也可以用于web上监控
master = "spark://服务器名:端口" #服务器名可以使用ip

conf = SparkConf().setAppName(appName).setMaster(master)
sc = SparkContext(conf=conf)


说明:

val sc = new SparkContext(master, appName, [sparkHome], [jars])

参数master指明集群的地址,是字符串,master可以是"local"--在本地单机运行,也可以是Spark或者Mesos集群的URL。
参数appName是Spark应用的名称,会在集群的web界面里显示出来。
参数sparkHome是spark的安装目录,注意,集群内所有节点的Spark必须安装在同样的目录下。
参数jars是打包后的Spark应用,是本地目录,这些Jar包会被复制发送到集群内的所有节点执行。


2.文件加载及处理:

a.处理:

"""odflow.py"""
from pyspark import SparkContext

fileDir = "/TripChain3_Demo.txt"
# sc = SparkContext("local", "ODFlow")
sc = SparkContext("spark://ITS-Hadoop10:7077", "ODFlow")
lines = sc.textFile(fileDir)

# python不能直接写多行的lambda表达式,所以要封装在函数中
def toKV(line):
    arr = line.split(",")
    t = arr[5].split(" ")[1].split(":")
    return (t[0]+t[1]+","+arr[11]+","+arr[18],1)

r1 = lines.map( lambda line : toKV(line) ).reduceByKey(lambda a,b: a+b)
# 排序并且存入一个(repartition)文件中
r1.sortByKey(False).saveAsTextFile("/pythontest/output")

b.发布

spark-submit \
  --master spark://ITS-Hadoop10:7077 \
  odflow.py

2.1 单个文件处理

2.1.1 无配置文件情况

    data_file = sc.textFile(input_file)  #sc为SparkContext对象
    data_file.map(handle_one_line).filter(lambda x: len(x.split("\t"))==7).saveAsTextFile(output_file)


2.1.2 有配置文件情况


2.2 两个文件(多个文件)处理


1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:36100次
    • 积分:1102
    • 等级:
    • 排名:千里之外
    • 原创:78篇
    • 转载:3篇
    • 译文:0篇
    • 评论:3条
    最新评论