rand()
null
void
的表CTAS建表
会失败SparkSQL允许在join on条件中使用or等不等式值关联语句,Hive中不允许,只能用等值关联
Row 类型 表示一行数据
# Row行数据操作
# 导入行类
from pyspark.sql import Row
定义每行数据 有两种获取方法=重点
r1 = Row(id=1,name='张三')
r2 = Row(id=2,name='李四')
# 操作每行数据
# 获取对应字段数据
print(r1.id)
print(r1.name)
print(r2['id'])
print(r2['name'])
定义行数据不指定字段 = 只有一种获取方法
r3 = Row(3,'王五')
print(r3[1])
df.printSchema()
schema表信息(这种指定表信息的更不常用
)
# 导入数据类型
from pyspark.sql.types import *
# 定义schema信息
# 使用StructType类进行定义
# add()方法是指定字段信息
# 第一参数,字段名
# 第二个参数,字段信息
# 第三个参数是否允许为空值 默认是True,允许为空
schema_type = StructType().\
add('id',IntegerType()).\
add('name',StringType()).\
add('age',IntegerType(),False)
df.printSchema()
# 导入行类Row
from pyspark.sql import SparkSession, Row
from pyspark.sql.types import *
# 创建行数据
r1 = Row(id=1, name='张三', age=20)
r2 = Row(id=2, name='李四', age=22)
# 创建元数据
schema = StructType(). \
add('id', IntegerType()). \
add('name', StringType()). \
add('age', IntegerType())
# 创建dataframe
# 生成sparksession对象 按照固定写法创建
ss = SparkSession.builder.getOrCreate()
# 使用sparksession对象方法创建df
# createDataFrame 第一参数是一个列表数据,将每行数据放入列表
# 第二个参数指定表元数据信息
# df是一个dataframe类型的对象
df = ss.createDataFrame([r1, r2], schema=schema)
# dataframe数据的操作
# 查看df数据
df.show() # 查看所有数据,超过20行时,默认只显示20行
# 查看元信息
df.printSchema()