spark 读写text,csv,json,parquet
以下代码演示的是spark读取 text,csv,json,parquet格式的file 为dataframe,
将dataframe保存为对应格式的文件
- package com.jason.spark23
- import org.apache.spark.sql.types.{StringType, StructField, StructType}
- import org.apache.spark.sql.{Row, SaveMode, SparkSession}
- object ReadTest {
- def main(args: Array[String]): Unit = {
- val spark = SparkSession.builder()
- .appName("readtest")
- .master("local")
- .getOrCreate()
- val pathjson = "C:\\notos\\code\\sparktest\\src\\main\\resources\\employees.json"
- val pathavsc = "C:\\notos\\code\\sparktest\\src\\main\\resources\\full_user.avsc"
- val pathtxt = "C:\\notos\\code\\sparktest\\src\\main\\resources\\people.txt"
- val pathcsv = "C:\\notos\\code\\sparktest\\src\\main\\resources\\people.csv"
- val pathparquet = "C:\\notos\\code\\sparktest\\src\\main\\resources\\users.parquet"
- val sc = spark.sparkContext
- println(s"-----------------read--------------------------")
- println("====txt df")
- val txtrdd = sc.textFile(pathtxt).map(_.split(",")).map(arr => Row.fromSeq(arr))
- val schemaString = "name age"
- val fields = schemaString.split(" ")
- .map(fieldName => StructField(fieldName, StringType, nullable = true))
- val schema = StructType(fields)
- val txtDf = spark.createDataFrame(txtrdd, schema)
- txtDf.show()
- println("====json df") //jsondf 会自动给schema设置类型
- val jsonDf = spark.read.json(pathjson)
- jsonDf.show()
- println("==== csvdf")
- //会根据值自动生成类型
- val csvdf = spark.read.format("csv")
- .option("sep", ";")
- .option("inferSchema", "true")
- .option("header", "true")
- .load(pathcsv)
- csvdf.show()
- println("====parquet df")
- val usersDF = spark.read.load(pathparquet)
- usersDF.show()
- println("----------------------------------write-------------------------------")
- val path = "C:\\notos\\code\\sparktest\\src\\main\\"
- println(s"====txt output")
- implicit val mapEncoder = org.apache.spark.sql.Encoders.kryo[String]
- csvdf
- .write
- .format("csv")
- .mode(SaveMode.Append)
- .options(Map("compression" -> "bzip2", "sep" -> "\t", "header" -> "false"))
- .save(path + "\\text")
- println(s"====csv output")
- csvdf.write.mode(SaveMode.Ignore)
- .format("csv")
- .option("sep", "|")
- .option("header", "true")
- .save(s"$path\\csv")
- println(s"====json output")
- csvdf.write.mode(SaveMode.Append)
- .format("json")
- .save(path + "\\json")
- println(s"====parquet output")
- csvdf.write.mode(SaveMode.Append)
- .format("parquet")
- .save(s"$path\\parquet")
- spark.stop()
- }
- }
上述将dataframe保存为text为也采取了csv格式,若要保存为text,dataframe中只能有一个String类型的字段,但是一般dataframe都不止一个字段,保存为text时也要指定字段分隔符,正好与csv的要求一致,而且csv格式的文件也可以用 sc.textFile 方法来读取
spark 读写text,csv,json,parquet的更多相关文章
- 使用Spark读写CSV格式文件(转)
原文链接:使用Spark读写CSV格式文件 CSV格式的文件也称为逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号.在本文中的CSV格 ...
- solr File Upload "Unsupported ContentType: application/vnd.ms-excel Not in: [application/xml, application/csv, application/json, text/json, text/csv, text/xml, application/javabin]",
今天在用solr管理界面导入文件时报错:"Unsupported ContentType: application/vnd.ms-excel Not in: [application/xm ...
- SparkSQL读写外部数据源-json文件的读写
object JsonFileTest { def main(args: Array[String]): Unit = { val spark = SparkSession .builder() .m ...
- Spark 读写hive 表
spark 读写hive表主要是通过sparkssSession 读表的时候,很简单,直接像写sql一样sparkSession.sql("select * from xx") 就 ...
- Data_r_and_w(csv,json,xlsx)
import osimport sysimport argparsetry: import cStringIO as StringIOexcept: import StringIOimpo ...
- Spark读写HBase
Spark读写HBase示例 1.HBase shell查看表结构 hbase(main)::> desc 'SDAS_Person' Table SDAS_Person is ENABLED ...
- spark读写mysql
spark读写mysql除官网例子外还要指定驱动名称 travels.write .mode(SaveMode.Overwrite) .format("jdbc") .option ...
- Spark读写ES
本文主要介绍spark sql读写es.structured streaming写入es以及一些参数的配置 ES官方提供了对spark的支持,可以直接通过spark读写es,具体可以参考ES Spar ...
- text to JSON
text to JSON GeoLocaltion API https://www.cnblogs.com/xgqfrms/p/13283680.html https://repl.it/@xgqfr ...
随机推荐
- Properties 取值和设置函数 Hashtable的静态内部类Entry的结构和克隆方法
- 牛客OI周赛10-普及组-A眼花缭乱的街市-(加速+二分)
https://ac.nowcoder.com/acm/contest/901/A 很简单的一道题,全场只有20+AC,卡时间.新学了cin加速语法和数组二分查找的函数调用. 知道有个读写挂,可以加速 ...
- Saint John Festival Gym - 101128J (凸包二分)
Problem J: Saint John Festival \[ Time Limit: 1 s \quad Memory Limit: 256 MiB \] 题意 给出\(n\)个大点,和\(m\ ...
- 【JZOJ6214】【20190614】tetris
题目 这是一道和俄罗斯方块有关的有趣题目 底面宽度为\(N\),高度无限,初始时方块高度为\(A_i\) 你可以决定每次会下落一个\(1 \times K\)或者\(K \times 1\)的方块 你 ...
- PKUSC2019滚粗记
PKUSC2019滚粗记 Day -INF 在\(\text{APIO}\)时得知省选考崩的自己居然能参加\(\text{SC}\),真是非常意外啊. Day 0 上午机房充斥着放假的气息,居然还成功 ...
- SQL基础-游标&事务
一.游标 1.游标简介 SQL是一种集合操作语言,但有时候需要对单行操作怎么办呢? 也就是有时候会过滤出不止一行的数据,但是想一行行的处理: ---游标 游标: 从集合中依次提取单条记录,直接提取完最 ...
- SpringBoot:缓存注解@Cacheable详解
1.查看@Cacheable @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @ ...
- spring(一)IOC & AOP
参考文档: spring详解:http://www.cnblogs.com/ysocean/p/7466191.html(可以说非常详细了) aop源码详解:https://www.cnblogs.c ...
- visual studio 2019 企业版下载
由于visual studio从2017开始就是网络下载安装,所以网速慢的朋友安装上就存在时间感,所以笔者在百度云上提供了visual studio 2019的下载包.需要的朋友自己下载安装.不过,2 ...
- RPGMaker MV 入门教程
RPG Maker是一个十分优秀的rpg游戏制作引擎 恩 一个被定义为游戏的游戏引擎 可以用来十分便捷的制作rpg游戏 有兴趣的可以尝试一下 满足自己想做游戏的愿望. Step1 决定你的RPG形 ...