在spark中将数据插入HIVE表
在spark中将数据插入HIVE表
用spark导入到HIVE中效率较高
1 创建数据集的spark D啊他Frames:
TmpDF=spark.createDataFrame(RDD,schema)
这里schema是由StructFied函数定义的
2 将数据集的DataFrames格式映射到零时表:
TmpDF.createOrReplaceTempView('TmpData')
3 用spark sql语句将零时表的数据导入hive的tmp_table表中:
sqlContext.sql('insert overwrite table tmp_table select *from TmpData')
首先创建一个数据库
spark.sql('create database school')
可以通过show(sql语句)来查看创建的表
strspark='''
create table student(id varchar(20),name varchar(20),sex varchar(20),result varchar(20))
row format delimited fields terminated by ','
'''
(三引号在python既可以充当注释也能多行输出)
可以通过 spark.sql('desc formatted student').show() 查看表的详细信息和结构
导入本地文件,并查询该表:
接着导入 from pyspark.sql.types import *,创建一个列表,通过编程的方式将它转化为RDD类型。通过map函数拆分并且改变里面值得类型。接着构建一个sch类型,将rdd和sch转换为DataFrame(schema DataFrame)。生成一个零时表,将转化的DataFrame导入其中,再将零时表插入到student表中。
将parquet类型文件插入到HIVE表中
首先创建一个parquet类型的表 name_age2,
查询一下表,发现内容是空的。
插入数据:
也可以通过注册成临时表插入数据
事实上,它和sql语句差不多,比如我们可以通过条件查询
定义用户函数
先定义python函数再采用register Function方法注册USD然后直接在DF SQL中使用
需要导入模块:from pyspark.sql import functions as F 我给他取别名为F便于书写
DataFrame中有一个agg函数(暂时不太了解用法)
也可以使用临时表