python技能实践系列(七)-- jupyter notebook 用spark读取本地文件实现简单的wordcount功能

python技能实践系列(七)-- jupyter notebook 用spark读取本地文件实现简单的wordcount功能

  1. 如果你正在用的是公司某台机器上的jupyter,不知道当前的工作目录,可以用下面的代码查看。展示的是绝对路径。
import os
os.getcwd()

命令结果
2.用spark读取当前工作目录下的文件。非远程文件,用file://表示读取本地文件

from pyspark import SparkContext
from pyspark.sql import SparkSession, Row
from pyspark.sql.types import StringType, StructField, StructType
import json
import csv
spark=SparkSession.builder \
    .appName("test") \
    .enableHiveSupport() \
    .getOrCreate()
sc = spark.sparkContext
csv_file ="file:///jupyter_notebook/test/text.csv" 
# csv_file ="file:///your_path/text.csv"
movieRdd= sc.textFile(csv_file)
movieCsv =movieRdd.map(lambda line: Row(*next(csv.reader([line]))))
schemaString = """budget,genres,homepage,id,keywords,original_language,original_title,overview,popularity,production_companies,
production_countries,release_date,revenue,runtime,spoken_languages,status,tagline,title,vote_average,vote_count"""
mdf = movieCsv.toDF(schemaString.split(','))
mdf.createOrReplaceTempView('movie')
genresDF = spark.sql('select genres from movie')
genresDF.show()
wordItem = genresDF.rdd.flatMap(lambda row:json.loads(row['genres'])).map(lambda x:(x['name'],1)) 
wordCount=wordItem.reduceByKey(lambda x,y:x+y)
wordCount.take(10)

PS:数据用的是豆瓣5000个电影的数据。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值