sparkRDD转DataFrame写hive的坑

2024-01-03 00:38
文章标签 hive dataframe sparkrdd

本文主要是介绍sparkRDD转DataFrame写hive的坑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在RDD使用schema和RDD的Row转成DataFrame再写到hive时,中间遇到一个坑,

我的写入代码是这样

// 创建schema
val schema: types.StructType = StructType(Seq(StructField("capture_time",IntegerType,true),StructField("color_id",IntegerType,true),StructField("location_id",LongType,true),StructField("license_plate",StringType,true))
)// 数据转为Row
val rowRDD: RDD[Row] = dataRDD.map(data => {val seq = Seq(data.getIntValue("capture_time"),data.getIntValue("color_id"),data.getLongValue("location_id"),data.getString("license_plate"))Row.fromSeq(seq)
})// 转df
val carDF = sparkSession.createDataFrame(rowRDD,schema)// 写库
carDF.write.mode(SaveMode.Append).save()

写hive一定要注意,df的字段顺序一定要和hive建表顺序一致,也就是在创建schema的时候就要保证顺序和hive的建表顺序一致,否则会出现hive的数据错乱的情况,字段和值对应不上。而且很坑的是即使类型错了,spark也不报错,还是继续往hive写。

hive的分区表,往往分区字段在最后一个字段,所以也要保证这里分区字段在schema的最后一个

这篇关于sparkRDD转DataFrame写hive的坑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/564097

相关文章

Python中DataFrame转列表的最全指南

《Python中DataFrame转列表的最全指南》在Python数据分析中,Pandas的DataFrame是最常用的数据结构之一,本文将为你详解5种主流DataFrame转换为列表的方法,大家可以... 目录引言一、基础转换方法解析1. tolist()直接转换法2. values.tolist()矩阵

java如何通过Kerberos认证方式连接hive

《java如何通过Kerberos认证方式连接hive》该文主要介绍了如何在数据源管理功能中适配不同数据源(如MySQL、PostgreSQL和Hive),特别是如何在SpringBoot3框架下通过... 目录Java实现Kerberos认证主要方法依赖示例续期连接hive遇到的问题分析解决方式扩展思考总

Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南

《Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南》在日常数据处理工作中,我们经常需要将不同Excel文档中的数据整合到一个新的DataFrame中,以便进行进一步... 目录一、准备工作二、读取Excel文件三、数据叠加四、处理重复数据(可选)五、保存新DataFram

Hive和Hbase的区别

Hive 和 HBase 都是 Hadoop 生态系统中的重要组件,它们都能处理大规模数据,但各自有不同的适用场景和设计理念。以下是两者的主要区别: 1. 数据模型 Hive:Hive 类似于传统的关系型数据库 (RDBMS),以表格形式存储数据。它使用 SQL-like 语言 HiveQL 来查询和处理数据,数据通常是结构化或半结构化的。HBase:HBase 是一个 NoSQL 数据库,基

掌握Hive函数[2]:从基础到高级应用

目录 高级聚合函数 多进一出 1. 普通聚合 count/sum... 2. collect_list 收集并形成list集合,结果不去重 3. collect_set 收集并形成set集合,结果去重  案例演示 1. 每个月的入职人数以及姓名  炸裂函数  概述  案例演示 1. 数据准备 1)表结构 2)建表语句 3)装载语句 2. 需求 1)需求说明 2)答

【Hive Hbase】Hbase与Hive的区别与联系

问题导读: Hive与Hbase的底层存储是什么? hive是产生的原因是什么? habase是为了弥补hadoop的什么缺陷? 共同点: 1.hbase与hive都是架构在hadoop之上的。都是用hadoop作为底层存储 区别: 2.Hive是建立在Hadoop之上为了减少MapReduce jobs编写工作的批处理系统,HBase是为了支持弥补Hadoop对实时操作的缺陷的项目

【python pandas】 Dataframe的数据print输出 显示为...省略号

pandas.set_option() 可以设置pandas相关的参数,从而改变默认参数。 打印pandas数据事,默认是输出100行,多的话会输出….省略号。 那么可以添加: pandas.set_option('display.max_rows',None) 这样就可以显示全部数据 同样,某一列比如url太长 显示省略号 也可以设置。 pd.set_option('display.

【hive 日期转换】Hive中yyyymmdd和yyyy-mm-dd日期之间的切换

方法1: from_unixtime+ unix_timestamp--20171205转成2017-12-05 select from_unixtime(unix_timestamp('20171205','yyyymmdd'),'yyyy-mm-dd') from dual;--2017-12-05转成20171205select from_unixtime(unix_timestamp

【hive 函数】Hive分析函数和窗口函数

拿一个例子来说 数据集: cookie1,2015-04-10 10:00:02,url2 cookie1,2015-04-10 10:00:00,url1 cookie1,2015-04-10 10:03:04,1url3 cookie1,2015-04-10 10:50:05,url6 cookie1,2015-04-10 11:00:00,url7 cookie1,2

Hive SQL 分组与连接操作详解

目录 分组 Group By语句 1. 案例实操  Having语句 1. having 与 where 不同点 2. 案例实操  Join语句  等值Join 1. 案例实操  表的别名 1. 好处 2. 案例实操  内连接  左外连接  右外连接  满外连接  多表连接 1. 创建位置表 2. 导入数据 3. 多表连接查询  笛卡尔集 1. 笛卡尔集