Spark SQL 外部数据源

Spark SQL 外部数据源

1. 概述

外部数据源API方便快速从不同的数据源(json,parquet,rdbms)引入处理数据,经过混合处理,写回到指定文件系统上去。

2. 操作parquet文件数据

  • 读数据

    spark.read.format(“parquet”).load(path)

    spark.read.format(“parquet”).option(“path”," … ").load

    spark.read.load(path)

    注意:sparksql默认的数据源是parquet,在使用read读取数据的时候可以不指定格式,如果不指定数据格式,
    同时没有指定的数据格式不是parquet,读数据的时候会报错!

  • 写数据

    df.write.format(“parquet”).save(path)

3. 操作Json文件数据

  • 读数据

    spark.read.format(“json”).load(path)

    spark.read.format(“json”).option(“path”," … ").load

  • 写数据

    df.write.format(“json”).save(path)

4. 操作Hive数据

  • 读数据

    spark.table(tableName)

  • 写数据

    df.write.saveAsTable(tableName)

    默认分区200,可以设置分区数量:
    spark.sqlContext.setConf(“spark.sql.shuffle.partitions”,“10”)

5. 操作mysql表数据

  • 读数据

    方式一:

      spark.read.format("jdbc").options(Map(“url”->"jdbc:mysql://localhost:3306/hive?user=root"
      &password=root",
      "dbtable"->"TBLS",
      "driver"->"com.mysql.jdbc.Driver")).load
    

    方式二:

      spark.read.format("jdbc").
      option(“url”,"jdbc:mysql://localhost:3306/hive?user=root&password=root").
      option("dbtable","TBLS").
      option("driver","com.mysql.jdbc.Driver").load
    

    方式三:

      import java.util.Properties
      val connectionProperties = new Properties()
      connectionProperties.put("user","root")
      connectionProperties.put("password","root")
      connectionProperties.put("driver","com.mysql.jdbc.Driver")
         val jdbcDf2 = spark.read.jdbc("jdbc:mysql://localhost:3306","hive.TBLS",connectionProperties) 
    
  • 写数据

    方式一:

    jdbcDF.write
    .format("jdbc")
    .option("url", "jdbc:postgresql:dbserver")
    .option("dbtable", "schema.tablename")
    .option("user", "username")
    .option("password", "password")
    .save()
    

    方式二:

      val connectionProperties = new Properties()
      connectionProperties.put("user","root")
      connectionProperties.put("password","root")
      connectionProperties.put("driver","com.mysql.jdbc.Driver")
      
      jdbcDF2.write
      .jdbc("jdbc:postgresql:dbserver", "schema.tablename", connectionProperties)
    

你可能感兴趣的:(sparksql)