scala+spark将datdframe数据写入excel文件并存储在hdfs制定路径

scala+spark将datdframe数据写入excel文件并存储在hdfs制定路径,第1张

scala+spark将datdframe数据写入excel文件并存储在hdfs制定路径

开发环境:IDEA

hadoop集群版本:  2.7.3

spark集群版本: 2.4.8

(1)需要导入pom依赖


    com.crealytics
    spark-excel_2.12
    0.13.5

(2)通过spark将示例数据构造为dataframe结构

def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("ExcelFileToHdfs").setMaster("local[*]")
 
    val sparkSession = SparkSession.builder().config(conf).getOrCreate()
    val sc = sparkSession.sparkContext
 
    val spark = new SQLContext(sc)
    val dataframe = spark.createDataframe(Seq(
      (0, gg, "10", "aaaaaaa"),
      (1, ff, "62", "bbbbbbb"),
      (2, ee, "15", "ccccccc"),
      (3, dd, "44", "ddddddd")
    )).toDF("id", "c1", "c2", "c3")
    dataframe.show()
   
    val hdfsFilePath = "存储路径"

    dataframe.repartition(1).write
      .format("com.crealytics.spark.excel")
      .option("dataAddress", "A1") // 指定sheet名称和要开始写入的cell位置或cell范围
      .option("header", "true") //是否输出表头
      .option("encoding", "UTF-8")
      .option("delimiter", ",")
      .option("dateFormat", "yyyy-mm-dd hh:mm:ss") // Optional, default: yy-m-d h:mm
      .option("timestampFormat", "yyyy-mm-dd hh:mm:ss") // Optional, default: yyyy-mm-dd hh:mm:ss.000
      .mode(SaveMode.Append) // Optional, default: overwrite. "append"模式下可以在一个Excel文件中追加多个sheet
      .save(hdfsFilePath) // 要输出的HDFS文件路径
  }

}

需要注意:若数据中存在时间格式数据,需要指定时间格式,否则默认写入格式很蹩脚

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5665159.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存