在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