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

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

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

?

val squaresDF = spark.sparkContext.makeRDD(1 to 5).map(i => (i, i * i)).toDF("value", "square")

然后以parquet格式保存

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

?

squaresDF.write.parquet("data/test_table/key=1")

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

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

?

val cubesDF = spark.sparkContext.makeRDD(6 to 10).map(i => (i, i * i * i)).toDF("value", "cube")

然后以parquet格式保存

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

?

cubesDF.write.parquet("data/test_table/key=2")

最后合并schema

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

?

val mergedDF = spark.read.option("mergeSchema", "true").parquet("data/test_table")

我们打印schema

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

?

mergedDF.printSchema()

接着我们现实数据

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

?

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] 纯文本查看 复制代码

?

SET key=value

更多配置项如下:

本文分享自微信公众号 - about云(wwwaboutyuncom)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-12-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

一条sql语句的改进探索(r5笔记第70天)

昨天同事找我,让我帮忙看两个sql问题,第一个问题是一个sql语句执行频率极高,但是目前的执行速度还是比较慢,希望我看看能不能调优一下。 另外一个问题是一个查询...

31680
来自专栏深度学习之tensorflow实战篇

hive基本操作整理

.hive模糊搜索表 show tables like '*name*'; 2.查看表结构信息 desc formatted table_name; desc...

33550
来自专栏杨建荣的学习笔记

看似诡异的tablespace online问题(r5笔记第95天)

今天在做一些演示的时候,在虚拟机上装了两套数据库软件,10g和11g的。还是在演示普通数据文件迁移的时候还是碰到了一些意料之外的问题,从当时的情况来看感觉还是比...

31670
来自专栏杨建荣的学习笔记

一条sql语句的建议调优分析(r5笔记第73天)

前几天开发的同事问我一个sql的问题,目前在测试环境中发现这条sql语句执行时间很长,希望我们能够给一些建议,能够尽快做一些改进。 sql语句类似下面的形式。 ...

30670
来自专栏杨建荣的学习笔记

关于ORA-01555的问题分析(r5笔记第87天)

今天开发的同事发给我一个问题,在运行某一个Job的时候抛出了ORA错误,希望我们看看从数据库层面能不能发现什么。 错误日志如下: Function: Entit...

32360
来自专栏深度学习之tensorflow实战篇

数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。

SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。 1. 数据查询语言DQL 数据查询语言DQL基本结构...

39290
来自专栏杨建荣的学习笔记

关于分区表的在线重定义(r5笔记第98天)

目前项目中有一个问题,存在一个分区表,因为分区规则的问题,使得分区表中的数据分布很不均匀,数据都分区在了默认的maxvalue分区上。现在需要重新划分分区。从常...

302100
来自专栏JMCui

再学习之MyBatis.

一、框架基本介绍 1、概念 支持普通SQL查询、存储过程和高级映射,简化和实现了Java 数据持久化层的的开源框架,主要流行的原因在于他的简单性和易使用性。 2...

50380
来自专栏杨建荣的学习笔记

两道简单的oracle题目(r5笔记第91天)

最近一个朋友想让我帮他一个忙,看似是一个很简单的小忙,就是出两道l题,一道可以难一些,可以通过这道题看出一个开发人员的数据库水平,sql或者pl/sql都可以,...

28080
来自专栏深度学习之tensorflow实战篇

hive模糊搜索表

1.hive模糊搜索表 show tables like '*name*'; 2.查看表结构信息 desc formatted table_name; des...

88290

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励