以下代码演示的是spark读取 text,csv,json,parquet格式的file 为dataframe,

将dataframe保存为对应格式的文件

  1. package com.jason.spark23
  2.  
  3. import org.apache.spark.sql.types.{StringType, StructField, StructType}
  4. import org.apache.spark.sql.{Row, SaveMode, SparkSession}
  5.  
  6. object ReadTest {
  7. def main(args: Array[String]): Unit = {
  8. val spark = SparkSession.builder()
  9. .appName("readtest")
  10. .master("local")
  11. .getOrCreate()
  12. val pathjson = "C:\\notos\\code\\sparktest\\src\\main\\resources\\employees.json"
  13. val pathavsc = "C:\\notos\\code\\sparktest\\src\\main\\resources\\full_user.avsc"
  14. val pathtxt = "C:\\notos\\code\\sparktest\\src\\main\\resources\\people.txt"
  15. val pathcsv = "C:\\notos\\code\\sparktest\\src\\main\\resources\\people.csv"
  16. val pathparquet = "C:\\notos\\code\\sparktest\\src\\main\\resources\\users.parquet"
  17. val sc = spark.sparkContext
  18. println(s"-----------------read--------------------------")
  19. println("====txt df")
  20. val txtrdd = sc.textFile(pathtxt).map(_.split(",")).map(arr => Row.fromSeq(arr))
  21. val schemaString = "name age"
  22. val fields = schemaString.split(" ")
  23. .map(fieldName => StructField(fieldName, StringType, nullable = true))
  24. val schema = StructType(fields)
  25. val txtDf = spark.createDataFrame(txtrdd, schema)
  26. txtDf.show()
  27.  
  28. println("====json df") //jsondf 会自动给schema设置类型
  29. val jsonDf = spark.read.json(pathjson)
  30. jsonDf.show()
  31.  
  32. println("==== csvdf")
  33. //会根据值自动生成类型
  34. val csvdf = spark.read.format("csv")
  35. .option("sep", ";")
  36. .option("inferSchema", "true")
  37. .option("header", "true")
  38. .load(pathcsv)
  39. csvdf.show()
  40.  
  41. println("====parquet df")
  42. val usersDF = spark.read.load(pathparquet)
  43. usersDF.show()
  44.  
  45. println("----------------------------------write-------------------------------")
  46. val path = "C:\\notos\\code\\sparktest\\src\\main\\"
  47.  
  48. println(s"====txt output")
  49. implicit val mapEncoder = org.apache.spark.sql.Encoders.kryo[String]
  50. csvdf
  51. .write
  52. .format("csv")
  53. .mode(SaveMode.Append)
  54. .options(Map("compression" -> "bzip2", "sep" -> "\t", "header" -> "false"))
  55. .save(path + "\\text")
  56.  
  57. println(s"====csv output")
  58. csvdf.write.mode(SaveMode.Ignore)
  59. .format("csv")
  60. .option("sep", "|")
  61. .option("header", "true")
  62. .save(s"$path\\csv")
  63.  
  64. println(s"====json output")
  65. csvdf.write.mode(SaveMode.Append)
  66. .format("json")
  67. .save(path + "\\json")
  68.  
  69. println(s"====parquet output")
  70. csvdf.write.mode(SaveMode.Append)
  71. .format("parquet")
  72. .save(s"$path\\parquet")
  73. spark.stop()
  74. }
  75. }

上述将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. Properties 取值和设置函数 Hashtable的静态内部类Entry的结构和克隆方法

  2. 牛客OI周赛10-普及组-A眼花缭乱的街市-(加速+二分)

    https://ac.nowcoder.com/acm/contest/901/A 很简单的一道题,全场只有20+AC,卡时间.新学了cin加速语法和数组二分查找的函数调用. 知道有个读写挂,可以加速 ...

  3. Saint John Festival Gym - 101128J (凸包二分)

    Problem J: Saint John Festival \[ Time Limit: 1 s \quad Memory Limit: 256 MiB \] 题意 给出\(n\)个大点,和\(m\ ...

  4. 【JZOJ6214】【20190614】tetris

    题目 这是一道和俄罗斯方块有关的有趣题目 底面宽度为\(N\),高度无限,初始时方块高度为\(A_i\) 你可以决定每次会下落一个\(1 \times K\)或者\(K \times 1\)的方块 你 ...

  5. PKUSC2019滚粗记

    PKUSC2019滚粗记 Day -INF 在\(\text{APIO}\)时得知省选考崩的自己居然能参加\(\text{SC}\),真是非常意外啊. Day 0 上午机房充斥着放假的气息,居然还成功 ...

  6. SQL基础-游标&事务

    一.游标 1.游标简介 SQL是一种集合操作语言,但有时候需要对单行操作怎么办呢? 也就是有时候会过滤出不止一行的数据,但是想一行行的处理: ---游标 游标: 从集合中依次提取单条记录,直接提取完最 ...

  7. SpringBoot:缓存注解@Cacheable详解

    1.查看@Cacheable @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @ ...

  8. spring(一)IOC & AOP

    参考文档: spring详解:http://www.cnblogs.com/ysocean/p/7466191.html(可以说非常详细了) aop源码详解:https://www.cnblogs.c ...

  9. visual studio 2019 企业版下载

    由于visual studio从2017开始就是网络下载安装,所以网速慢的朋友安装上就存在时间感,所以笔者在百度云上提供了visual studio 2019的下载包.需要的朋友自己下载安装.不过,2 ...

  10. RPGMaker MV 入门教程

    RPG Maker是一个十分优秀的rpg游戏制作引擎 恩 一个被定义为游戏的游戏引擎 可以用来十分便捷的制作rpg游戏 有兴趣的可以尝试一下 满足自己想做游戏的愿望.   Step1 决定你的RPG形 ...