分享

spark2 sql编程之实现合并Parquet格式的DataFrame的schema

本帖最后由 pig2 于 2017-12-15 18:12 编辑

问题导读

1.DataFrame合并schema由哪个配置项控制?
2.修改配置项的方式有哪两种?
3.spark读取hive parquet格式的表,是否转换为自己的格式?



首先说下什么是schema,其实这跟通俗来讲,与我们传统数据表字段的名称是一个意思。明白了这个,我们在继续往下看。

合并schema
首先创建RDD,并转换为含有两个字段"value", "square"的DataFrame
[mw_shl_code=scala,true]val squaresDF = spark.sparkContext.makeRDD(1 to 5).map(i => (i, i * i)).toDF("value", "square")[/mw_shl_code]
1.jpg
然后以parquet格式保存
[mw_shl_code=scala,true]squaresDF.write.parquet("data/test_table/key=1")
[/mw_shl_code]

然后在创建RDD,并转换为含有两个字段"value", "cube"的DataFrame
[mw_shl_code=scala,true]val cubesDF = spark.sparkContext.makeRDD(6 to 10).map(i => (i, i * i * i)).toDF("value", "cube")[/mw_shl_code]
2.jpg

然后以parquet格式保存

[mw_shl_code=scala,true]cubesDF.write.parquet("data/test_table/key=2")[/mw_shl_code]
最后合并schema
[mw_shl_code=scala,true]val mergedDF = spark.read.option("mergeSchema", "true").parquet("data/test_table")[/mw_shl_code]
3.jpg

我们打印schema
[mw_shl_code=scala,true]mergedDF.printSchema()[/mw_shl_code]
打印schema.jpg

接着我们现实数据
[mw_shl_code=scala,true]mergedDF.show[/mw_shl_code]
show.jpg

如果想合并schema需要设置mergeSchema 为true,当然还有另外一种方式是设置spark.sql.parquet.mergeSchema为true。

相关补充说明:

Hive metastore Parquet表格式转换
当读取hive的 Parquet 表时,Spark SQL为了提高性能,会使用自己的支持的Parquet,由配置 spark.sql.hive.convertMetastoreParquet控制,默认是开启的。
上面除了Parquet格式支持外,还有ProtocolBuffer, Avro, 和Thrift支持合并。

如何修改配置项:
可以通过SparkSession 的setConf 或则使用SQL命令
[mw_shl_code=bash,true]SET key=value [/mw_shl_code]
更多配置项如下:

1.jpg

相关文章:
spark2 sql读取json文件的格式要求
http://www.aboutyun.com/forum.php?mod=viewthread&tid=23478


spark2 sql读取json文件的格式要求续:如何查询数据
http://www.aboutyun.com/forum.php?mod=viewthread&tid=23483

spark2 sql编程之实现合并Parquet格式的DataFrame的schema
http://www.aboutyun.com/forum.php?mod=viewthread&tid=23518

spark2 sql编程样例:sql操作
http://www.aboutyun.com/forum.php?mod=viewthread&tid=23501

spark2 sql读取数据源编程学习样例1:程序入口、功能等知识详解
http://www.aboutyun.com/forum.php?mod=viewthread&tid=23484


spark2 sql读取数据源编程学习样例2:函数实现详解
http://www.aboutyun.com/forum.php?mod=viewthread&tid=23489


spark2 sql编程之实现合并Parquet格式的DataFrame的schema
http://www.aboutyun.com/forum.php?mod=viewthread&tid=23518



本帖被以下淘专辑推荐:

没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条