sparkSql(hive) 复合数据类型的使用

本文介绍了如何在SparkSQL中使用Hive的复合数据类型,如Array、Map和Struct,并提供了从RDD转换为DataFrame的示例。通过具体业务场景,展示了如何处理包含嵌套Map类型的用户组合数据,并将其存储到Hive表中。在转换过程中,强调了遵守RDD到DataFrame转换规则的重要性,以及在Hive中定义复合数据类型的语法。
摘要由CSDN通过智能技术生成

在Hive中可以使用复合数据类型,有三种常用的类型:Array 数组,Map 字典,Struct结构。在sparkSql中RDD可以转换成非常灵活的DataFrame,有下面几种语法:

rdd=sc.parallelize([1,2,3])

a=rdd.map(lambda item:Row(item))

schema=['test_colum']

a=a.toDF(schema)


a=rdd.map(lambda item:Row(item))

sqlContext.createDataFrame(a,['test_colum'])


schema=StructType([StructField('test_colum',StringType,True)])

df=sqlContext.applySchema(rdd,schema)

最后一种创建方式可以很灵活的设置字段的类型,包括数据类型和复合类型

但是如果需要将数据结构完整的存储为Hive表,那么在RDD到DataFrame转换中需要遵守一些规则。


在Hive中创建复合数据类型的语法:

create table plan(

clientid string

,plan_info array<map<string,string>> --originalid,yield

)

Hive 中数据类型可以继续嵌套到很复杂的程度

业务背景:一个用户可以创建多个组合,需要按照用户的维度提取组合ID及累积收益率,并插入到Hive表中

rdd=sc.p

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值