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

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

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


合并schema


首先创建RDD,并转换为含有两个字段"value", "square"的DataFrame

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

21de21353720b1c3423d21dca2e877c9.jpg然后以parquet格式保存

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


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

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

835c3d904063ad8648bab772b6c0edc0.jpg然后以parquet格式保存


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

最后合并schema

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

2a5e9913d7fb6c9a69968360014b9b75.jpg

我们打印schema

mergedDF.printSchema()

e8b753e78dc83ecbd879dfa7b47b0c47.jpg

接着我们现实数据

mergedDF.show

4be30bdc539681241467fa36cc46050e.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命令

SET key=value

更多配置项如下:

5cc947ef714ffbb182104eef59a47c43.jpg

目录
打赏
0
0
0
0
29
分享
相关文章
Spark SQL向量化执行引擎框架Gluten-Velox在AArch64使能和优化
本文摘自 Arm China的工程师顾煜祺关于“在 Arm 平台上使用 Native 算子库加速 Spark”的分享,主要内容包括以下四个部分: 1.技术背景 2.算子库构成 3.算子操作优化 4.未来工作
637 0
【赵渝强老师】Spark SQL的数据模型:DataFrame
本文介绍了在Spark SQL中创建DataFrame的三种方法。首先,通过定义case class来创建表结构,然后将CSV文件读入RDD并关联Schema生成DataFrame。其次,使用StructType定义表结构,同样将CSV文件读入RDD并转换为Row对象后创建DataFrame。最后,直接加载带有格式的数据文件(如JSON),通过读取文件内容直接创建DataFrame。每种方法都包含详细的代码示例和解释。
155 0
大数据≠大样本:基于Spark的特征降维实战(提升10倍训练效率)
本文探讨了大数据场景下降维的核心问题与解决方案,重点分析了“维度灾难”对模型性能的影响及特征冗余的陷阱。通过数学证明与实际案例,揭示高维空间中样本稀疏性问题,并提出基于Spark的分布式降维技术选型与优化策略。文章详细展示了PCA在亿级用户画像中的应用,包括数据准备、核心实现与效果评估,同时深入探讨了协方差矩阵计算与特征值分解的并行优化方法。此外,还介绍了动态维度调整、非线性特征处理及降维与其他AI技术的协同效应,为生产环境提供了最佳实践指南。最终总结出降维的本质与工程实践原则,展望未来发展方向。
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
229 79
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
505 2
ClickHouse与大数据生态集成:Spark & Flink 实战
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
158 0
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
133 0
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
175 0
Spark快速上手:揭秘大数据处理的高效秘密,让你轻松应对海量数据
【10月更文挑战第25天】本文全面介绍了大数据处理框架 Spark,涵盖其基本概念、安装配置、编程模型及实际应用。Spark 是一个高效的分布式计算平台,支持批处理、实时流处理、SQL 查询和机器学习等任务。通过详细的技术综述和示例代码,帮助读者快速掌握 Spark 的核心技能。
379 6
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问