美文网首页
DataFrame 读取与保存

DataFrame 读取与保存

作者: hipeer | 来源:发表于2018-10-11 17:36 被阅读0次

    Spark SQL支持多种结构化数据源,能够轻松从各种数据源中读取Row对象。这些数据源包括Hive表,JSON,Parquet,CSV等文件。


    • 从文件系统加载与保存
    // hdfs上读取
    val customerDF = spark.read.format("csv").mode("overwrite").option("header", true).load("hdfs:/temp/data/customer.csv")
    // 保存在hdfs
    customerDF.write.format("csv").save("hdfs:///temp/data/customerDF")
    
    // 本地文件系统上读取
    val customerDF = spark.read.format("csv").mode("overwrite").option("header", true).load("file:///root/data/customer.csv")
    // 保存在本地
    customerDF.write.format("csv").save("file:///root/data/customerDF")
    

    注:save mode有四种如下:

    mode 说明
    errorifexists(default) 当数据源已经存在数据,抛出一个异常
    apped 当数据源已经存在数据,将新的数据附加到原有数据上
    overwrite 当数据源已经存在数据,新数据覆盖掉原有数据
    Ignore 当数据源已经存在数据,忽略新数据
    • 从Hive中读取与保存
    // 第一种读取方式
    val orderDF = spark.table("sparkdf.orders")
    
    // 第二种读取方式
    val spark = SparkSession.builder.enableHiveSupport.getOrCreate
    val orderDF = spark.sql("select * from sparkdf.orders")
    
    // 保存DF为Hive表
    orderDF.write.mode("overwrite").saveAsTable("saprkdf.orders")
    
    • RDB中读取与保存
    // 引入jar包
    spark-shell --jars mysql-connector-java.jar
    
    // 读数据
    val usersDF= spark.read.format("jdbc")
    .option("url", "jdbc:mysql://localhost:3306/retail_db")
    .option("driver", "com.mysql.jdbc.Driver")
    .option("user", "root")
    .option("password", "123456")
    .option("dbtable", "users")
    .load()
    
    
    // 保存到mysql,首先导入Propertoes类
    import java.util.Properties
    
    val perproties = new Perproties()
    perproties.put("driver", "com.mysql.jdbc.Driver")
    perproties.put("user", "root")
    perproties.put("password", "123456")
    
    // 保存为mysql表
    usersDF.write.mode("overwrite").jdbc("jdbc:mysql://localhost:3306/retail_db", "users", properties)
    
    // 另一种保存方式
    userDF.write.mode("overwrite").format("jdbc")
    .option("url", "jdbc:mysql://localhost:3306")
    .option("driver", "com.mysql.jdbc.Driver")
    .option("dbtable", "retail_db.users")
    .option("user", "root")
    .option("password", "123456")
    .save()
    

    相关文章

      网友评论

          本文标题:DataFrame 读取与保存

          本文链接:https://www.haomeiwen.com/subject/kzmmaftx.html