在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语句)来查看创建的表

在spark中将数据插入HIVE表

接着我在school数据库中创建了个student表:

        strspark='''
create table student(id varchar(20),name varchar(20),sex varchar(20),result varchar(20))
row format delimited fields terminated by ','

'''

(三引号在python既可以充当注释也能多行输出)

在spark中将数据插入HIVE表

可以通过    spark.sql('desc formatted student').show()     查看表的详细信息和结构

导入本地文件,并查询该表:

在spark中将数据插入HIVE表

接着导入 from  pyspark.sql.types import *,创建一个列表,通过编程的方式将它转化为RDD类型。通过map函数拆分并且改变里面值得类型。接着构建一个sch类型,将rdd和sch转换为DataFrame(schema DataFrame)。生成一个零时表,将转化的DataFrame导入其中,再将零时表插入到student表中。

在spark中将数据插入HIVE表

在spark中将数据插入HIVE表在spark中将数据插入HIVE表


将parquet类型文件插入到HIVE表中

首先创建一个parquet类型的表 name_age2,

在spark中将数据插入HIVE表

查询一下表,发现内容是空的。

在spark中将数据插入HIVE表

插入数据:

在spark中将数据插入HIVE表


也可以通过注册成临时表插入数据

在spark中将数据插入HIVE表


在spark中将数据插入HIVE表

事实上,它和sql语句差不多,比如我们可以通过条件查询

在spark中将数据插入HIVE表


在spark中将数据插入HIVE表

定义用户函数

    先定义python函数再采用register Function方法注册USD然后直接在DF    SQL中使用

    需要导入模块:from pyspark.sql import functions as F   我给他取别名为F便于书写

   DataFrame中有一个agg函数(暂时不太了解用法)

在spark中将数据插入HIVE表

也可以使用临时表

在spark中将数据插入HIVE表