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
更多配置项如下:
- 人工智能AI(5):线性代数之矩阵、线性空间
- iOS开发进阶篇——FRP与ReactiveCocoa的介绍(一)
- 英伟达修改GeForce软件使用条款:禁止在数据中心运行深度学习等应用
- 浅谈几种SLB技术的实现
- 史上最逼真人形机器人堪比健身教练,技能满满还会流汗
- 被监管前的疏忽?互联网金融大面积逾期,中介行为不容忽视
- 达尔文漏算的一步却让它填补,科学家认为人类最初认可的进化论不再适用
- 假如黑客攻击您的互联网汽车会怎么样?
- 享学课堂谈-Python初学者的设计模式入门
- 本体网络Ontology Zero入选国家工信部区块链开源项目计划
- 完全无人驾驶将首先在中国大城出现
- 榴莲售出的三拼域名ancaiyun.com 已建站
- 微信提现免费!申请微信免费提现的教程
- 程序员也是天文学家?利用机器学习寻找行星
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 详解php协程知识点
- php curl简单采集图片生成base64编码(并附curl函数参数说明)
- PHP通过get方法获得form表单数据方法总结
- PHP filesize函数用法浅析
- PHP中创建和编辑Excel表格的方法
- php二维数组按某个键值排序的实例讲解
- thinkphp5引入公共部分header、footer的方法详解
- php实现文章评论系统
- PHP如何搭建百度Ueditor富文本编辑器
- 浅谈keras.callbacks设置模型保存策略
- pandas之分组groupby()的使用整理与总结
- PHP fclose函数用法总结
- Python collections.defaultdict模块用法详解
- PHP crc32()函数讲解
- python读取图像矩阵文件并转换为向量实例