pyspark-02 DataFrame语法


基本概念

  1. DataFrame 是一个由 Row 对象组成的 RDD,附带包含每列数据类型的结构信息
  2. 具有分布式、不可变、惰性计算等特性
  3. 不可变:修改DataFrame只能通过转换操作生成新的DataFrame
  4. spark的DataFrame,也是使用pyspark的做数据处理的基操
  5. sparkSQL,sparkDataset和sparkDataFrame关系
    1. 可以把DataFrame注册成表,然后用写SQL计算,只是sparkSQL返回的也是sparkDataFrame
    2. sparkDataFrame是Dataset(row), Dataset本身每行数据可以是其它类型

基本语法

初始化spark环境

创建spark的上下文环境, 然后就可以调用不同的函数进行操作

from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()

进行一些基础配置的环境创建

spark = SparkSession\
        .builder\
        .appName(app_name) \
        .config("spark.master", "yarn") \
        .config('spark.driver.memory', '8g')\
        .config("spark.executor.instances", 60) \
        .config('spark.executor.cores', 4)\
        .config('spark.executor.memory', '8g')\
        .getOrCreate()
  • spark.driver.memory:driver端内存
  • spark.executor.instances:executor数量
  • spark.executor.cores:每个executor的进程数
  • spark.executor.memory:每个executor的内存

一般上面4个参数就可以控制整个程序的资源大小

自定义python环境

有些executer可能python环境不一致,或者某些包也没有安装,需要在整个任务统一python环境。

# 1. 打包本地python环境
tar -zcvf py36.tar.gz /home/worker/envs/py36

# 2. 上传hdfs
hadoop fs -put py36.tar.gz hdfs://path1/path2/pyenv/

# 3. spark初始化指定环境
spark = SparkSession\
        .builder\
        .appName(app_name) \
        .config('spark.driver.memory', '8g')\
        .config('spark.executor.cores', 4)\
        .config('spark.executor.memory', '8g')\
        .config("spark.yarn.dist.archives", "hdfs://path1/path2/pyenv/py36.tar.gz#python3env")\
        .config("spark.pyspark.python", "./python3env/py36/bin/python")\
        .getOrCreate()

常用语法

记录一些常用语法

DataFrame操作

create dataframe
from pyspark.sql import SparkSession
import pyspark.sql.functions as F
import pyspark.sql.types as T
from pyspark.sql.functions import udf

rdd = spark.sparkContext.parallelize([
    (1, 2., 'sdsd|sdsd:sdsd', date(2000, 1, 1), datetime(2000, 1, 1, 12, 0)),
    (1, 3., '20202_19001', date(2000, 2, 1), datetime(2000, 1, 2, 12, 0)),
    (1, 3., '20202_19001', date(2000, 2, 1), datetime(2000, 1, 2, 12, 0)),
    (1, 3., '20202_19001', date(2000, 2, 1), datetime(2000, 1, 2, 12, 0)),
    (1, 3., '20202_19001', date(2000, 2, 1), datetime(2000, 1, 2, 12, 0)),
    (1, 3., '20202_19001', date(2000, 2, 1), datetime(2000, 1, 2, 12, 0)),
    (1, 3., '20202_19001', date(2000, 2, 1), datetime(2000, 1, 2, 12, 0)),
    (1, 3., '20202_19001', date(2000, 2, 1), datetime(2000, 1, 2, 12, 0)),
    (1, 3., '20202_19001', date(2000, 2, 1), datetime(2000, 1, 2, 12, 0)),
    (1, 3., '20202_19001', date(2000, 2, 1), datetime(2000, 1, 2, 12, 0)),
    (2, 3., '20202_19001', date(2000, 2, 1), datetime(2000, 1, 2, 12, 0)),
    (2, 3., '20202_19001', date(2000, 2, 1), datetime(2000, 1, 2, 12, 0)),
    (2, 3., '20202_19001', date(2000, 2, 1), datetime(2000, 1, 2, 12, 0)),
    (2, 3., '20202_19001', date(2000, 2, 1), datetime(2000, 1, 2, 12, 0)),
    (3, 4., '', date(2000, 3, 1), datetime(2000, 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值