- Spark SQL/Hive SQL与SQL的关系
- HSQL与普通SQL的区别
- 数据类型
SQL:Structured Query Language,用于对关系型数据库进行操作的标准化语言。不同数据库对应不同类型的SQL。
Spark SQL/Hive SQL:Spark使用的数据存储是Hive,因此Spark SQL即Hive SQL,具有其自身的一些标准和使用方法。
HSQL与普通SQL的区别-
HSQL不支持等值链接,即不能省略join,如:
SQL中内关联可以这样写: select * from a , b where a.key = b.key
Hive中应该这样写: select * from a join b on a.key = b.key -
HiveQL中String类型的字段若是空(empty)字符串, 长度为0, 那么其is null的判断结果是False,使用left join可以进行筛选行
-
HQL不支持行级别的增insert into、改update、删delete,Hive仅支持覆盖重写整个表:insert overwrite 表 (重写覆盖)
-
HSQL支持写入分区
除rdd外,Spark SQL提供了一种Dataframe(此处与Python中的dataframe不同,两者有不同的属性和操作)。
Dataframe是存放row对象的RDD,每个Row对象代表一行记录。
Dataframe:
- 使用SQL创建Dataframe
df=spark_session.sql(‘sql’) - 将rdd转化为df
df = rdd.toDF() - df创建视图(类似数据表)
view=df.createOrReplaceTempView(‘viewName’) - 将最终的查找结果(df)写入hive
df.write.format(“hive”).mode(“append”).partitionBy(‘date’).saveAsTable(table_name)
rdd:
- 将df转化为rdd
rdd1=df.rdd.repartition(200) - 调用函数返回新的rdd
rdd2=rdd1.mapPartitions(function)



