开发环境:IDEA
hadoop集群版本: 2.7.3
spark集群版本: 2.4.8
(1)需要导入pom依赖
com.crealytics spark-excel_2.120.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文件路径 } }
需要注意:若数据中存在时间格式数据,需要指定时间格式,否则默认写入格式很蹩脚
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)