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)