PySpark学习---通过spark-submit提交到yarn运行

main.py文件

# coding:utf8

from pyspark import SparkConf, SparkContext
from defs_19 import city_with_category
import json
if __name__ == '__main__':
    conf = SparkConf().setAppName("test-yarn-1")
    conf.set("spark.submit.pyFiles", "defs.py")
    sc = SparkContext(conf=conf)
    # 如果提交到集群运行,除了主代码以外,还依赖了其它的代码文件
    # #需要设置一个参数,来告知spark ,还有依赖文件要同步上传到集群中
    # 参数叫做: spark .submit.pyFiles
    # 参数的值可以是单个.py文件,―也可以是.zip压缩包(有多个依赖文件的时候可以用zip压缩后上传)
    # 读取数据文件
    # file_rdd = sc.textFile("../data/input/order.text")
    file_rdd = sc.textFile("hdfs://192.168.88.161:8020/test/input/order.text")
    # 进行rdd数据的split 按照|符号进行, 得到一个个的json数据
    jsons_rdd = file_rdd.flatMap(lambda line: line.split("|"))
    # print(jsons_rdd.collect())
    # 通过Python 内置的json库, 完成json字符串到字典对象的转换
    dict_rdd = jsons_rdd.map(lambda json_str: json.loads(json_str))
    # print(dict_rdd.collect())
    # 过滤数据, 只保留北京的数据
    beijing_rdd = dict_rdd.filter(lambda d: d['areaName'] == "北京")
    # print(beijing_rdd.collect())
    # 组合北京 和 商品类型形成新的字符串
    category_rdd = beijing_rdd.map(city_with_category)
    # print(category_rdd.collect())
    # 对结果集进行去重操作
    result_rdd = category_rdd.distinct()
    # 输出
    print(result_rdd.collect())

defs.py文件

def city_with_category(data):
    return data['areaName']+"_"+data['category']

 Linux上提交文件命令

/export/server/spark/bin/spark-submit --master yarn --py-files ./defs.py ./main.py

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值