网站名称写什么,wordpress 安装的时候是英文,wordpress内容伪原创,山东省建设备案在哪个网站SparkSQL和Hive语法差异
1、仅支持Hive
SparkSQL关联条件on不支持函数rand()创建零时表时#xff0c;Spark不支持直接赋值nullSpark无法读取字段类型为void的表SparkSQL中如果表达式没有指定别名#xff0c;SparkSQL会将整个表达式作为别名#xff0c;如果表达式中包含特殊…SparkSQL和Hive语法差异
1、仅支持Hive
SparkSQL关联条件on不支持函数rand()创建零时表时Spark不支持直接赋值nullSpark无法读取字段类型为void的表SparkSQL中如果表达式没有指定别名SparkSQL会将整个表达式作为别名如果表达式中包含特殊字符如逗号。则CTAS建表会失败
2、仅支持SparkSQL
SparkSQL允许在join on条件中使用or等不等式值关联语句Hive中不允许只能用等值关联
3、相同函数差异
Spark运行时用到的hash函数与hive的哈希算法不同如果使用hash()结果和hive的hash会有差异Hive和sparkSQL使用grouping sets生成的grouping_id不一致regexp_extract未匹配上的话hive里回的是null但是在spark里返回的是空字符sparkSQL中的row_number的over中不能省略sort by 或order bygrouping_id()函数生成的数据不同reflect函数中如果入参有非法数据或者nullhive会返回null而spark会抛出异常
创建DataFrame
Row 类型 表示一行数据
datafram就算是多行构成
# Row行数据操作
# 导入行类
from pyspark.sql import Row定义每行数据 有两种获取方法重点
r1 Row(id1,name张三)
r2 Row(id2,name李四)
# 操作每行数据
# 获取对应字段数据
print(r1.id)
print(r1.name)
print(r2[id])
print(r2[name])定义行数据不指定字段 只有一种获取方法
r3 Row(3,王五)
print(r3[1])df.printSchema()schema表信息这种指定表信息的更不常用
定义dataframe中的表的字段名和字段类型
# 导入数据类型
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(id1, name张三, age20)
r2 Row(id2, name李四, age22)
# 创建元数据
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], schemaschema)# dataframe数据的操作
# 查看df数据
df.show() # 查看所有数据,超过20行时,默认只显示20行
# 查看元信息
df.printSchema()