Spark读取数据及保存数据

java Spark RDD从Hive表中读取数据并保存为JavaPairRDD<String, String> HiveContext hiveCtx = new HiveContext(jsc); hiveCtx.sql("use xx");//xx为Hive分配给部门的权限 Dataset rows = hiveCtx.sql("select * from xx.table_name where ds = 'dd'"); JavaPairRDD jpair = rows.javaRDD().m 阅读详情

创建SparkSession

sparkSQl 可以读取不同数据源的数据,比如jdbc,json,csv,parquet
执行读操作就用sparkSession.read.文件类型,执行写操作就用SparkSession.write.文件类型

首先创建一个SparkSession:

val spark = SparkSession.builder().appName("load data")
      .master("local[4]")
      .getOrCreate()

如果通过spark-shell 进入的,会自动创建

[xxx@hadoop bin]$ ./spark-shell
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
2020-06-15 16:17:00,429 [main] WARN  org.apache.spark.util.Utils - Service 'SparkUI' could not bind on port 4040. Attempting port 4041.
2020-06-15 16:17:00,430 [main] WARN  org.apache.spark.util.Utils - Service 'SparkUI' could not bind on port 4041. Attempting port 4042.
2020-06-15 16:17:00,430 [main] WARN  org.apache.spark.util.Utils - Service 'SparkUI' could not bind on port 4042. Attempting port 4043.
2020-06-15 16:17:00,431 [main] WARN  org.apache.spark.util.Utils - Service 'SparkUI' could not bind on port 4043. Attempting port 4044.
Spark context Web UI available at http://172.20.xx.xx:4044
Spark context available as 'sc' (master = yarn, app id = application_1565137100893_1929326).
Spark session available as 'spark'.

读取数据

jdbc

读取

   //load这个函数是并没有真正读取MySQL中的数据,而是建立了一个连接,记录了这个表头(Schema)的信息
    val logs: DataFrame = spark.read.format("jdbc").options(
      Map("url" -> "jdbc:mysql://localhost:3306/bigdata",
        "driver" -> "com.mysql.jdbc.Driver",
        "dbtable" -> "logs",
        "user" -> "root",
        "password" -> "")
    ).load()

保存

//将结果写入到数据库中
    val props = new Properties()
    props.put("user","root")
    props.put("password","")
    //mode是模式
    // ignore表示不做任何改变,直接写,如果要写入的表已经存在,则不追加也不覆盖
    result.write.mode("ignore").jdbc("jdbc:mysql://localhost:3306/bigdata","logs1",props)

json

//读取json文件(读取的数据格式直接就是DataFrame,因为json文件中可以保存属性名和属性值)
val logs: DataFrame = spark.read.json("/home/hadoop/app/json")

//DataFrame保存成json(可以保存更多的信息,属性和属性名(表头))
 result.write.json("/home/hadoop/app/json")

csv

//读取csv文件(根据字段分割就知道一行有多少列数据,然后会给每一列取一个名字)
val logs: DataFrame = spark.read.csv("/home/hadoop/app/csv")
 //自己定义每一列的名称
val csv: DataFrame = logs.toDF("id","name","age")

//DataFrame保存成csv(保存好的数据用逗号隔开,没有表头信息)
 result.write.csv("/home/hadoop/app/csv")

parquet

//读取parquet文件(还可以指定HDFS目录),可以智能的知道每一列数据的类型
val parquetLines: DataFrame = spark.read.parquet("/home/hadoop/app/parquet")
//或者使用另一种方式读取
val parquetLines: DataFrame = spark.read.format("parquet").load("/home/hadoop/app/parquet")
//DataFrame保存成parquet(智能类型的数据源,列式存储),既保存数据,又保存了Schema信息
result.write.parquet("/home/hadoop/app/parquet")

保存数据

import org.apache.spark.SparkConf
import org.apache.spark.sql.{DataFrame, SparkSession}

//todo:sparksql可以把结果数据保存到不同的外部存储介质中
object SaveResult {

  def main(args: Array[String]): Unit = {
    //1、创建SparkConf对象
    val sparkConf: SparkConf = new SparkConf().setAppName("Result").setMaster("local[2]")

    //2、创建SparkSession对象
    val spark: SparkSession = SparkSession.builder().config(sparkConf).getOrCreate()

    //3、加载数据源 //也可以换成HDFS路径
    val jsonDF: DataFrame = spark.read.json("d:\\data\\score.json")

    //4、把DataFrame注册成表
    jsonDF.createTempView("t_score")

    //todo:5、统计分析
    val result: DataFrame = spark.sql("select * from t_score where score > 80")

    //保存结果数据到不同的外部存储介质中
    //todo: 5.1 保存结果数据到文本文件  ----  保存数据成文本文件目前只支持单个字段,不支持多个字段
    result.select("name").write.text("./data/result/123.txt")

    //todo: 5.2 保存结果数据到json文件
    result.write.json("./data/json")

    //todo: 5.3 保存结果数据到parquet文件
    result.write.parquet("./data/parquet")

    //todo: 5.4 save方法保存结果数据,默认的数据格式就是parquet
    result.write.save("./data/save")

    //todo: 5.5 保存结果数据到csv文件
    result.write.csv("./data/csv")

    //todo: 5.6 保存结果数据到表中
    result.write.saveAsTable("t1")

    //todo: 5.7  按照单个字段进行分区 分目录进行存储
    result.write.partitionBy("classNum").json("./data/partitions")

    //todo: 5.8  按照多个字段进行分区 分目录进行存储
    result.write.partitionBy("classNum","name").json("./data/numPartitions")


    spark.stop()
  }

}

Spark DataFrame读写数据库(Mysql)--记录 从数据库读数据,返回DataFrame import org.apache.spark.sql.SparkSession import java.util.Properties object RWJdbc { def main(args: Array[String]): Unit = { val spark = SparkSession.builder().master("loca... 阅读详情

相关推荐

从零到一:Zephyr RTOS 在 STM32F4 上的移植与实战(含设备树配置详解)

本文详细介绍了如何从零开始将Zephyr RTOS移植到STM32F4开发板,涵盖开发环境搭建、硬件抽象层分析、设备树配置及系统裁剪等关键步骤。通过实战案例,帮助开发者掌握Zephyr RTOS在嵌入式设备中的应用,提升物联网边缘计算设备的开发效率。

weixin_26976635的博客 591

hive中导入csv_Spark SQL 之外部数据源如何成为在企业开发中的一把利器

一、概述1.Spark1.2中,Spark SQL开始正式支持外部数据源。Spark SQL开放了一系列接入外部数据源的接口,来让开发者可以实现。使得Spark SQL可以加载任何地方的数据,例如mysql,hive,hdfs,hbase等,而且支持很多种格式如json, parquet, avro, csv格式。我们可以开发出任意的外部数据源来连接到Spark SQL,然后我们就可以通过外部数据...

weixin_39883440的博客 276

Redis简介和项目应用

内存优先架构简介Redis的读写操作都是在内存中执行的,计算机内存的读写速度极快,比机械硬盘的读写快很多,因此也会比MySql采用机械读写的方式性能更高。但是这样会产生一个问题,当Redis重启之后,内存中的数据就会丢失,为了保证数据不会因为服务器重启而丢失,Redis实现了数据持久化的机制,这个机制会把数据存储到磁盘中,当服务器重启的时候,能够从磁盘中恢复原有的数据。

人工智能、机器学习 759

Spark写入支持更新【源码二次开发】

在大数据开发过程中,遇到很多Spark写入mysql得场景,目前由于Spark仅支持以下几种由于在写入mysql时,需要数据根据主键进行更新,而不覆盖或追加,次业务场景也比较多。看了Spark源码后,故此有两种方式进行数据更新用于实时覆盖写入数据。此种方式代码开发量少以Spark3.4.0为例新增一种枚举写入方式:在该方法中首先从上游传递SaveMode:mode参数再更加写入的mode判断返回Insert INTO /Replace into sql。

Mirror_w的博客 1536

SAP SD POD 配置与 VLPOD 操作:3步解决发货10件开票7件的业务场景

本文详细解析了SAP SD POD功能在解决发货与开票数量差异中的应用,通过3步配置法实现精准匹配。重点介绍了POD核心逻辑、关键配置步骤及VLPOD操作技巧,帮助企业高效处理易损品运输等复杂场景,提升供应链管理效率。

weixin_30613343的博客 395

Masta调用Geometry Modeller(Space Claim)进行根据三维模型快速建模设置方法

masta中调用ANSYS的space claim的设置方法

xifegnlie的博客 244

SPARK-SQL 通过load(),write()读写各种数据源

读取(load)和保存(write)操作,操作的文件的数据格式默认是parquet 也可以在load和write的时候,通过format指定数据的格式 如: spark.read().format("json").load() deviceInfoDF.write().mode(SaveMode.Overwrite).format("orc").save 代码示例 import org.apache.spark.sql.Dataset; import org.apache.spark.sql.R.

小哇 4843

3D Gaussian Splatting的使用

Gaussian splatting 快速生成自己屋子的模型

gootyking的博客 1万+

spark资源分配优化

资源参数调优   了解完了Spark作业运行的基本原理之后,对资源相关的参数就容易理解了。所谓的Spark资源参数调优,其实主要就是对Spark运行过程中各个使用资源的地方,通过调节各种参数,来优化资源使用的效率,从而提升Spark作业的执行性能。以下参数就是Spark中主要的资源参数,每个参数都对应着作业运行原理中的某个部分,我们同时也给出了一个调优的参考值。 num-executors ...

amazon2006的博客 746

实现电脑同时上内网和外网(或通过外网访问到该电脑通过该电脑访问内网)

一、需求描述 目前使用的公司网络只能够上内网,但是又有上外网查资料的需求: ①想要实现电脑既能上内网的同时也可以上外网; ②想要使用其他外网电脑使用外网连接到该电脑,通过该电脑访问内部的网络内容。 二、准备内容 电脑必须具备两个网卡,即:可以同时连接内网和外网(比如我的笔记本就可以:使用网线连接笔记本网口与内网通讯,使用WIFI连接手机热点访问外部网络); 注意:如果只有一个网口,可以另外购买USB的无线网卡来实现上网卡。 三、实现电脑同时上内网和外网的操作步骤 3.1、网络拓扑图 ..

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 2万+

嵌入式u-boot最全面试题及参考答案(5万字长文持续更新)

例如,在一个便携式设备中,U-Boot 在启动时初始化电源控制器,将输出电压设置为合适的值。命令是u-boot构建过程中用于配置u-boot选项的命令。在嵌入式系统中,启动画面(也称为启动Logo或Splash Screen)是展示给用户的第一印象,它可以包含公司的标志、产品的名称或其他相关信息。u-boot允许通过环境变量来进行配置,这使得开发者可以根据不同的硬件平台和项目需求灵活地调整u-boot的行为。写入操作可以是字节级别的,也可以是块级别的,具体取决于设备的性能和操作系统的需求。

大模型大数据攻城狮的专栏 997

spark 写 parquet 文件到 hdfs 上、以及到本地

spark 写 parquet 文件到本地 package SQL import org.apache.spark.SparkContext import org.apache.spark.sql.{DataFrame, SparkSession} object Demo7_2 extends App { val spark: SparkSession = SparkSession.builder().master("local[4]") .appName("demo1").getOrCreate

qq_43368947的博客 1940

YOLOv11魔改高效涨点 | 注意力篇 | SimAM注意力:基于神经科学的 3D 注意力机制,三维权重的暴力美学,无参数也能暴力涨点?代码极简,彻底疯狂!!!

在本文中,我们为卷积神经网络(ConvNets)提出了一个概念简单但非常有效的注意力模块。与现有的通道注意力(Channel-wise)和空间注意力(Spatial-wise)模块不同,我们的模块在不向原始网络添加参数的情况下,推断出层中特征图的 3D 注意力权重。具体来说,我们基于一些知名的神经科学理论,提出优化一个能量函数来寻找每个神经元的重要性。我们进一步推导出了该能量函数的快速闭式解,并表明该解可以用不到十行代码实现。

猫天意的博客 248

spark读取数据并打印_Spark读取和保存数据

读写Parquet(DataFrame)Spark SQL可以支持Parquet、JSON、Hive等数据源,并且可以通过JDBC连接外部数据源。前面的介绍中,我们已经涉及到了JSON、文本格式的加载,这里不再赘述。这里介绍Parquet,下一节会介绍JDBC数据库连接。Parquet是一种流行的列式存储格式,可以高效地存储具有嵌套字段的记录。Parquet是语言无关的,而且不与任何一种数据处理框...

weixin_35216188的博客 2690

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

spark sql保存DataFrame到mysql & 从mysql读取数据

在hdfs上存储一个sql文件 cust.txt: 1,smith,12 2,bob,13 3,alex,14 4,alice,15 6,mike,26 1.保存DataFrame到mysql import org.apache.spark.sql.SparkSession /** * 将数据框保存成数据库的表中 */ object SparkSQLJDBCWriteDe...

nengyu的专栏 2978

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

spark读取数据并打印_Spark学习之数据读取与保存总结(一)

一、动机我们已经学了很多在 Spark 中对已分发的数据执行的操作。到目前为止,所展示的示例都是从本地集合或者普通文件中进行数据读取和保存的。但有时候,数据量可能大到无法放在一台机器中,这时就需要探索别的数据读取和保存的方法了。Spark 及其生态系统提供了很多可选方案。本章会介绍以下三类常见的数据源。• 文件格式与文件系统:对于存储在本地文件系统或分布式文件系统(比如 NFS、HDFS、Amaz...

weixin_35695142的博客 1632

spark保存数据到hbase_Spark读取Hbase中的数据

如果想及时了解iteblog_hadoop大家可能都知道很熟悉Spark的两种常见的数据读取方式(存放到RDD中):(1)、调用parallelize函数直接从集合中获取数据,并存入RDD中;Java版本如下: JavaRDD myRDD = sc.parallelize(Arrays.asList(1,2,3));Scala版本如下: val myRDD= sc.parallelize(List...

weixin_39970369的博客 376

【spark】关于spark处理上百T数据清洗过滤的思考

我,菜鸡一只! 本文会通过读取数据文件,外部传入参数,处理数据,保存数据,参数设置这几个点来宏观的说说我自己对于spark使用中的一些注意点 继上一次写文章到现在好久了哦! 工作上,数据的日常需求还是一直有的,然后我自己又想接一接java功能上的需求(多写写java代码提升自己的眼界),在这样的情况下,我的工作已经基本饱和了,结果突然领导说还要开个新的数据模型,年前要给测试反馈,所以12...

lsr40的博客 2753

Spark读取MySQL中的数据为DataFrame

Spark读取JDBC中的数据(以MySQL为例)为DataFrame,有两种方式。 //聚合的时候默认分区是200,可以在此设置 val spark = SparkSession.builder().master("local").appName("schema") .config("spark.sql.shuffle.partitions",1).getOrCreate() 方式...

墨玉浮白的博客 1681

Spark,数据提取和保存

mode("overwrite") // 模式:overwrite/append/ignore/errorIfExists。- inferSchema : 是否自动推断数据类型(适用于 CSV/JSON,需读取少量数据,影响性能)。- 对于大规模数据,建议使用分区并行写入(如 option("numPartitions", "4") )。.option("inferSchema", "true") // 自动推断数据类型。1. 读取文件数据(文本/CSV/JSON/Parquet 等)

2401_87076425的博客 644

Spark——数据读取与保存

Spark 的数据读取及数据保存可以从两个维度来作区分:文件格式以及文件系统。 文件格式分为:Text 文件、Json 文件、Csv 文件、Sequence 文件以及 Object 文件; 文件系统分为:本地文件系统、HDFS、HBASE 以及数据库。 一、文件类数据读取与保存 1.1 Text 文件 (1)数据读取:textFile(String) scala> val hdfsFile = sc.textFile("hdfs://hadoop102:9000/fruit.txt") hdfsF

weixin_43520450的博客 1750

spark集群从HDFS中读取数据并计算

一、             对于安装有spark的集群的节点要做好时间同步问题,因为节点的心跳机制需要系统时间。 解决办法一: 通过securecrt同时向多个tab窗口发送相同的时间调整命令 a.选择菜单栏View -->ChatWindows  对号,此时所有服务器连接下方应该有个空白的部分 b.在空白的部分(Chat Windows)右键鼠标, 选上Send Chatto All

vinsuan93的专栏 2万+

Spark向HBase中写入或读取数据

Spark读取HBase中的数据 import org.apache.hadoop.conf.Configuration import org.apache.hadoop.hbase.{CellUtil, HBaseConfiguration} import org.apache.hadoop.hbase.io.ImmutableBytesWritable import org.apache....

蚂蚁 1039

Spark Core快速入门系列 (六) 数据读取与保存

Spark的数据读取及数据保存可以从两个维度来作区分:文件格式以及文件系统。 文件格式分为:Text文件、Json文件、Csv文件、Sequence文件以及Object文件; 文件系统分为:本地文件系统、HDFS、HBASE以及数据库。 文章目录文件类数据读取与保存Text文件Json文件Sequence文件对象文件文件系统类数据读取与保存HDFSMySQL数据库连接HBase数据库 文件类数据读取与保存 Text文件 1)数据读取:textFile(String) val path = "hdfs://h

weixin_45417821的博客 282

Spark 数据读取与保存(输入、输出)

4.数据读取与保存   Spark 的数据读取及数据保存可以从两个维度来作区分:文件格式以及文件系统。 文件格式分为:Text 文件、Json 文件、Csv 文件、Sequence 文件以及 Object 文件; 文件系统分为:本地文件系统、HDFS、HBASE 以及数据库。 1)数据读取:textFile(String) scala>...

weixin_30836759的博客 2254

Spark createDirectStream保存kafka offset(JAVA实现)

Spark createDirectStream保存kafka offset(JAVA实现) 问题描述 最近使用Spark streaming处理kafka的数据,业务数据量比较大,就使用了kafkaUtils的createDirectStream()方式,此方法直接从kafka的broker的分区中读取数据,跳过了zookeeper,并且没有receiver,是spa

Make progress step by step everyday..... 836
上一篇: hive join on 条件 与 where 条件区别
下一篇: 磁盘挂载工程师
yjgithub
博客等级 码龄11年 53粉丝 105原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值