前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >spark sql编程之实现合并Parquet格式的DataFrame的schema

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

作者头像
用户1410343
发布2018-03-26 14:45:45
1.6K0
发布2018-03-26 14:45:45
举报
文章被收录于专栏:about云about云

问题导读 1.DataFrame合并schema由哪个配置项控制? 2.修改配置项的方式有哪两种? 3.spark读取hive parquet格式的表,是否转换为自己的格式? 首先说下什么是schema,其实这跟通俗来讲,与我们传统数据表字段的名称是一个意思。明白了这个,我们在继续往下看。 合并schema 首先创建RDD,并转换为含有两个字段"value", "square"的DataFrame

[Scala] 纯文本查看 复制代码

?

代码语言:javascript
复制
val squaresDF = spark.sparkContext.makeRDD(1 to 5).map(i => (i, i * i)).toDF("value", "square")

然后以parquet格式保存

[Scala] 纯文本查看 复制代码

?

代码语言:javascript
复制
squaresDF.write.parquet("data/test_table/key=1")

然后在创建RDD,并转换为含有两个字段"value", "cube"的DataFrame

[Scala] 纯文本查看 复制代码

?

代码语言:javascript
复制
val cubesDF = spark.sparkContext.makeRDD(6 to 10).map(i => (i, i * i * i)).toDF("value", "cube")

然后以parquet格式保存

[Scala] 纯文本查看 复制代码

?

代码语言:javascript
复制
cubesDF.write.parquet("data/test_table/key=2")

最后合并schema

[Scala] 纯文本查看 复制代码

?

代码语言:javascript
复制
val mergedDF = spark.read.option("mergeSchema", "true").parquet("data/test_table")

我们打印schema

[Scala] 纯文本查看 复制代码

?

代码语言:javascript
复制
mergedDF.printSchema()

接着我们现实数据

[Scala] 纯文本查看 复制代码

?

代码语言:javascript
复制
mergedDF.show

如果想合并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命令

[Bash shell] 纯文本查看 复制代码

?

代码语言:javascript
复制
SET key=value

更多配置项如下:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-12-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 about云 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档