大数据单机学习环境搭建(9)Spark单节点安装与pyspark使用

18 篇文章 8 订阅
4 篇文章 1 订阅

包含sparksql的完整使用案例,请务必耐心看完


大数据单机学习环境搭建(9)Spark单节点安装与pyspark使用

1.Spark安装

apache官网下载spark
个人下载的资源分享

# 解压安装,我的位置都在/opt
tar -zxvf spark-3.2.1-bin-hadoop3.2.tgz
# 改名
mv spark-3.2.1-bin-hadoop3.2 spark

2.Spark配置

2.1配置环境变量

# 配置环境变量
vim /etc/profile
# 添加内容
export SPARK_HOME=/opt/spark
export PYSPARK_PYTHON=/opt/anaconda3/bin/python
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
# 更新配置文件使其立即生效
source /etc/profile

# /root/.bashrc配置在JAVA_HOME和PYSPARK_PYTHON
export JAVA_HOME=/opt/jdk
export PYSPARK_PYTHON=/opt/anaconda3/bin/python

2.2spark客户端

下面所有内容都是Spark Local环境下运行,从Pyspark解释器启动和样例脚本构建SparkSession都可以看到

/opt/spark/bin/pyspark  # 交互式的 Python解释器环境
/opt/spark/bin/spark-shell  # scala解释器环境
/opt/spark/bin/spark-submit  # 提交jar包或Python文件执行的工具
/opt/spark/bin/spark-sql  # sparksql客户端工具

pyspark解释器运行示例,进入后可写python代码执行
在这里插入图片描述

3.Spark使用

没有废话要仔细看,完整可运行

3.1环境准备

Hadoop本地单节点安装
Hive安装和启用
Linux单节点Anaconda安装和Pycharm连接 中1和2的内容完成Anaconda的pyspark包安装

3.2脚本说明

  1. sparksql构建SparkSession需要用到HDFS和metastore服务,所以需要提前开启
    在这里插入图片描述
  2. 数据准备
    1)数据内容自行设置一个如下数据就行,文件命名问tmsapp_tms_app_instant_tag_visit_a_d202220520格式,后面日期换成当前日期,因为脚本中用的是
    datetime.datetime.now().strftime('%Y%m%d')作为文件补充名
    LH91417,青铜会员
    LH15905,原木会员
    LH29615,原木会员
    LH88779,黄金会员
    
    2)把文件放在这个路径下/home/tmp_app_data/,没有路径就自建mkdir /home/tmp_app_data,或者自己改动脚本中load路径
    3)脚本文件放在自己记得住的位置,位置名字随便起,例如我的是 /tmp/pycharm_project_652/LHbank/01pyspark_sql_visit_mid.py
  3. 脚本内容,包含删表、建表、删除分区、建立分区、插入数据、查询数据,共6步sql操作。
# -*- coding:utf-8 -*-
"""
    删表、建表、删除分区、建立分区、插入数据、查询数据
"""
from pyspark.sql import SparkSession
import datetime

spark = SparkSession.builder \
    .appName('learn') \
    .master("local[*]") \
    .config("spark.sql.shuffle.partitions", 1) \
    .config("spark.sql.warehouse.dir", "hdfs://自己的ip:8020/user/hive/warehouse") \
    .config("hive.metastore.uris", "thrift://自己的ip:9083") \
    .enableHiveSupport() \
    .getOrCreate()

# 删表
sql_drop_table = """drop table if exists tms_app.tmsapp_tms_app_instant_tag_visit_a_d;"""
spark.sql(sql_drop_table)

# 建表
sql_create_table = """
        create table tms_app.tmsapp_tms_app_instant_tag_visit_a_d(
            cust_id 	string  comment '客户号',
            vip_name	string	comment '会员名称'
        )
        partitioned by (dt string)
        row format delimited fields terminated by ','
        ;
    """
spark.sql(sql_create_table)

# 分区格式yyyy-MM-dd,当前日期yyyyMMdd格式
cur_dt = datetime.datetime.now().strftime('%Y-%m-%d')
cur_dt_simple = datetime.datetime.now().strftime('%Y%m%d')

# 删除分区
sql_drop_partition = """alter table tms_app.tmsapp_tms_app_instant_tag_visit_a_d drop if exists partition (dt='{}');""".format(
    cur_dt)
spark.sql(sql_drop_partition)

# 增加分区
sql_add_partition = """alter table tms_app.tmsapp_tms_app_instant_tag_visit_a_d add partition (dt='{}');""".format(
    cur_dt)
spark.sql(sql_add_partition)

# load数据
sql_load_data = """load data local inpath '/home/tmp_app_data/tmsapp_tms_app_instant_tag_visit_a_d{}.txt' overwrite into table tms_app.tmsapp_tms_app_instant_tag_visit_a_d partition (dt='{}');""".format(
    cur_dt_simple, cur_dt)
spark.sql(sql_load_data)

# 查询
sql = """select * from tms_app.tmsapp_tms_app_instant_tag_visit_a_d where dt='{}' limit 5;""".format(cur_dt)
spark.sql(sql).show()

print('OK')

spark.stop()

3.3服务开启

  1. 开启hadoop和hive metastore服务
    /opt/hadoop/sbin/start-all.sh 
    nohup /opt/hive/bin/hive --service metastore &
    netstat -anp| grep 9083
    jps
    
    结果如图在这里插入图片描述
  2. 关闭防火墙打开systemctl stop firewalldNamenode网页http://自己的ip:9870在这里插入图片描述

3.4脚本执行

  1. 先用hive创建一个名为tms_app的数据库,名称无所谓,我的示例样本写的这个,所以就创建了这个。

    hive -e 'create database tms_app;'
    

    在这里插入图片描述

  2. 调用脚本执行

     spark-submit /tmp/pycharm_project_652/LHbank/01pyspark_sql_visit_mid.py
    

    在这里插入图片描述

  3. HDFS查看数据文件
    在这里插入图片描述

至此,spark已可以正常运行,pyspark.sql的案例也介绍完毕了。欢迎接着看 Pycharm中操作spark和hive


声明:本文所载信息不保证准确性和完整性。文中所述内容和意见仅供参考,不构成实际商业建议,如有雷同纯属巧合。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值