SPARK-SQL 读取外部数据源 parquet文件的读写

news/2023/6/5 20:59:40

相关的资源文件地址

链接:https://pan.baidu.com/s/1QGQIrVwg56g9eF16ERSLwQ 
提取码:7v8n

toDF算子
个人感觉就是修改schema中列的名称,顺序要一样,不能多,也不能少

parquet 文件读写示例

import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SaveMode;
import org.apache.spark.sql.SparkSession;
public class test14 {public static void main(String[] args) {SparkSession spark = SparkSession.builder().config("spark.driver.host", "localhost").appName("ParquetFileTest").master("local").getOrCreate();spark.sparkContext().setLogLevel("ERROR");//1: 将json文件数据转化成parquet文件数据Dataset<Row> df = spark.read().json(Utils.BASE_PATH + "/people.json");df.show();df.write().option("compression", "snappy").mode(SaveMode.Overwrite).parquet(Utils.BASE_PATH + "/parquet");//2: 读取parquet文件Dataset<Row> parquetDF = spark.read().parquet(Utils.BASE_PATH + "/parquet");parquetDF.show();
//        +---+-------+
//        |age|   name|
//        +---+-------+
//        | 29|Michael|
//        | 30|   Andy|
//        | 19| Justin|
//        +---+-------+//3: parquet schema merge//全局设置spark.sql.parquet.mergeSchema = trueDataset<Row> dataset_2 = df.toDF("age", "first_name");dataset_2.show(false);
//        +---+-------+
//        |age|   first_name|
//        +---+-------+
//        | 29|Michael|
//        | 30|   Andy|
//        | 19| Justin|
//        +---+-------+dataset_2.write().mode(SaveMode.Overwrite).parquet(Utils.BASE_PATH + "/parquet_schema_change");//mergeSchema 合并 schema//这里读取了多个目录的parquet文件Dataset<Row> schemaMergeDF =spark.read().option("mergeSchema", "true").parquet(Utils.BASE_PATH + "/parquet",Utils.BASE_PATH + "/parquet_schema_change");schemaMergeDF.show();
//        +---+-------+----------+
//        |age|   name|first_name|
//        +---+-------+----------+
//        | 29|   null|   Michael|
//        | 30|   null|      Andy|
//        | 19|   null|    Justin|
//        | 29|Michael|      null|
//        | 30|   Andy|      null|
//        | 19| Justin|      null|
//        +---+-------+----------+spark.stop();}
}

 


https://dhexx.cn/news/show-18356.html

相关文章

网关Gateway断⾔+过滤器整合注册中心Nacos项目实战

网关Gateway断⾔过滤器整合注册中心Nacos项目实战一、前言二、网关介绍三、基本网关转发1、创建Gateway项目2、配置四、整合注册中心Nacos1、添加Nacos依赖2、启动类开启支持3、修改配置文件4、网关访问的代码五、Gateway内置断言实现接口定时下线与强制参数六、自定义全局过滤…

Hadoop的体系结构

HDFS和MapReduce是Hadoop的两大核心。而整个Hadoop的体系结构主要是通过HDFS来实现对分布式存储的底层支持的&#xff0c;并且它会通过MapReduce来实现对分布式并行任务处理的程序支持。 1、HDFS的体系结构 HDFS采用了主从&#xff08;Master/Slave&#xff09;结构模型&#x…

Redis分布式锁实现

Redis分布式锁实现一、Redis分布式锁的出现二、普通分布式锁&#xff08;不推荐&#xff09;1、pom依赖2、普通版本的分布式锁3、redis分布式锁保证三、升级版分布式锁1、工具类2、场景一程序运行时间大于锁时间提前结束3、场景二程序运行时间小于锁自动释放时间&#xff0c;触…

Unity NGUI 创建简单的按钮

Unity版本&#xff1a;4.5.1  NGUI版本&#xff1a;3.6.5 注意NGUI版本&#xff0c;网上的大部分教程都是2.x版本的&#xff0c;在步骤上面略有不同&#xff0c;此文适合初学者。 示例&#xff1a; 通过NGUI创建一个背景和按钮。 1.首先创建一个新场景&#xff0c;并保存&…

UVa - 11283 - PLAYING BOGGLE

先上题目 Problem F PLAYING BOGGLE Boggle is a classic word game played on a 4 by 4 grid of letters. The letter grid is randomly generated by shaking 16 cubes labeled with a distribution of letters similar to that found in English words. Players try to find…

Open-Feign整合hystrix降级熔断实战

Open-Feign整合hystrix降级熔断实战一、服务端1、配置文件2、控制层二、客户端1、依赖2、配置文件3、启动类4、在控制层当中调用5、创建一个类实现服务FeignClient接口6、在服务FeignClient接口上配置FallBack实现类三、测试1、场景一服务正常调用2、场景二当被调服务停止运行时…

图的全局最小割的Stoer-Wagner算法及例题

Stoer-Wagner算法基本思想&#xff1a;如果能求出图中某两个顶点之间的最小割&#xff0c;更新答案后合并这两个顶点继续求最小割&#xff0c;到最后就得到答案。 算法步骤&#xff1a; ------------------------------------------------------------------------------------…

学习消息中间件Kafka从配置到基本应用

学习消息中间件Kafka从配置到基本应用一、服务器安装配置Kafka1、配置介绍与修改2、启动3、配置开机自启4、如果不使用自带的zookeeper二、Kafka的使用场景1、异步处理2、应用解耦3、流量削锋4、日志处理5、消息通讯三、点对点消息传递模式1、介绍四、发布-订阅消息传递模式1、…

【译】ASP.NET MVC 5 教程 - 1:入门

本教程将教你使用Visual Studio 2013 预览版构建 ASP.NET MVC 5 Web 应用程序 的基础知识。本主题还附带了一个采用 C# 源代码的 Visual Web Developer 项目。下载C# 版本。 入门 Visual Studio 是一个集成的开发环境。就像您使用 Microsoft Word 写文档&#xff0c;您将使用 I…

Redis雪崩、穿透、击穿补充学习与布隆过滤器

Redis学习补充与布隆过滤器一、缓存雪崩1、介绍2、处理雪崩数据二、缓存穿透1、介绍2、处理穿透数据三、缓存击穿2、处理击穿数据四、Redis其他知识1、Redis为何这么快2、Redis的持久化策略五、布隆过滤器1、安装2、介绍布隆过滤器3、使用布隆过滤器BloomFilter解决Redis的缓存…