以下代码演示的是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的更多相关文章

  1. 使用Spark读写CSV格式文件(转)

    原文链接:使用Spark读写CSV格式文件 CSV格式的文件也称为逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号.在本文中的CSV格 ...

  2. 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 ...

  3. SparkSQL读写外部数据源-json文件的读写

    object JsonFileTest { def main(args: Array[String]): Unit = { val spark = SparkSession .builder() .m ...

  4. Spark 读写hive 表

    spark 读写hive表主要是通过sparkssSession 读表的时候,很简单,直接像写sql一样sparkSession.sql("select * from xx") 就 ...

  5. Data_r_and_w(csv,json,xlsx)

    import osimport sysimport argparsetry:    import cStringIO as StringIOexcept:    import StringIOimpo ...

  6. Spark读写HBase

    Spark读写HBase示例 1.HBase shell查看表结构 hbase(main)::> desc 'SDAS_Person' Table SDAS_Person is ENABLED ...

  7. spark读写mysql

    spark读写mysql除官网例子外还要指定驱动名称 travels.write .mode(SaveMode.Overwrite) .format("jdbc") .option ...

  8. Spark读写ES

    本文主要介绍spark sql读写es.structured streaming写入es以及一些参数的配置 ES官方提供了对spark的支持,可以直接通过spark读写es,具体可以参考ES Spar ...

  9. text to JSON

    text to JSON GeoLocaltion API https://www.cnblogs.com/xgqfrms/p/13283680.html https://repl.it/@xgqfr ...

随机推荐

  1. rushjs来自微软的单体仓库管理工具

    rushjs 是来自微软的单体仓库管理工具 ,与lerna 类似但是使用上稍显复杂 安装 npm install -g @microsoft/rush   简单使用 一个传统的基于npm 的处理 ~$ ...

  2. rundeck配置salt-api

    Rundeck 安装: 系统: # cat /etc/issue CentOS release 6.7 (Final) 内核: # uname -r -.el6.x86_64 IP 地址: 172.1 ...

  3. python字符串转整形异常

    python字符串转整形异常 问题 在使用int("xx")转化字符串为整形时,如果字符串是float形式,这样转化会异常 int('3.0') Traceback (most r ...

  4. 暑假gosh计划

    [要参与的事项]: 1.大创 2.CTF 3.ACM 4.自己的巴拉巴拉巴 [基本目标]: 1.大创 学完一本Java入门教材 学习Material Design,了解典型交互,进行ui初步设计 2. ...

  5. CCF认证 201903-4消息传递接口

    题目 代码 #include <iostream> #include <stdio.h> #include <stdlib.h> #include <stri ...

  6. IIS部署Silverlight

    题设: 网站如果应用了Silverlight技术,直接部署到IIS中是无法正常运行的, 分析: 因为Silverlight应用所对应的三种MIME类型没有在IIS中注册,所以Silverlight相关 ...

  7. 引用fastclick.js或使用触屏监听 滑动屏幕报错:解决[Intervention] Unable to preventDefault inside passive event listener

    使用fastClick.js所产生的一些问题 开发h5活动页时想到移动端会有300ms的延迟,于是便打算用fastClick.js解决. 页面引入fastClick.js后,滑动H5页面的时候发现谷歌 ...

  8. Arbitrary Style Transfer in Real-time with Adaptive Instance Normalization

    Arbitrary Style Transfer in Real-time with Adaptive Instance Normalization 2019-10-10 10:50:19 Paper ...

  9. 配置IDEA项目JDK环境

    打开IDEA,然后点击[Configure]->[Project Defaults]->[Project Structure],如下图:  然后左侧点击树形菜单的[Project Sett ...

  10. SpringBoot过滤器过滤get及post请求中的XSS和SQL注入

    1.创建XssAndSqlHttpServletRequestWrapper包装器,这是实现XSS过滤的关键,在其内重写了getParameter,getParameterValues,getHead ...