SparkSQL之加载与保存数据
sparkSQL可以加载与保存各种类型的数据
spark.read.load 是sparkSQL默认加载数据的方式,默认是加载parquet文件,但是可以通过spark.sql.sources.default 修改
spark.read.format("…")[.option("…")].load("…"),通用数据加载方式
format来指定不同的数据格式,包括"csv"、“jdbc”、“json”、“orc”、“parquet"和"textFile”
option为参数,如果是jdbc,那么需要填入数据库的连接参数
直接在文件上进行查询: 文件格式.文件路径
scala>spark.sql("select * from json.`/opt/module/data/user.json`").show
spark SQL Spark 读取的 JSON 文件不是传统的 JSON 文件,每一行都应该是一个 JSON 串
如下:
{"name":"zhangsan","age":12}
{"name":"lisi","age":34}
spark.write.save 通用保存数据方式,默认是保存为parquet文件,也是可以通过spark.sql.sources.default 修改
df.write.format("…")[.option("…")].save("…")通用数据保存方式
format指定数据保存的格式
option指定参数,如选择jdbc时,指定数据库
保存这里有一个重要的参数,mode()用来指定保存的模式
代码如下(示例):
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
读取mysql中数据再写回mysql中,通过load的方式
请记得选择写入的模式
val df = sparkSesion.read.format("jdbc")
.option("url", "jdbc:mysql://hadoop102:3306/test")
.option("driver", "com.mysql.jdbc.Driver")
.option("user", "root")
.option("password", "000000")
.option("dbtable", "user2")
.load()
df.write.format("jdbc")
.option("url","jdbc:mysql://hadoop102:3306/test")
.option("driver","com.mysql.jdbc.Driver")
.option("user","root")
.option("password","000000")
.option("dbtable","user")
.mode(SaveMode.Append)
.save()
SparkSQL 最开始就是从hive中来的,只不过把mapreduce 换成了spark core,所以SparkSQL 默认内置了一个hive,
所以,如果要使用内部的hive,那么什么也不要做,就可以连接hive
但是如果需要外部的hive,那么需要:
1.把hive的 hive-site.xml 放入spark的conf下
2.把mysql的驱动放到spark的jar下,即可连接外部hive(前提是hdfs还有yarn已经启动了)
这个时候在spark-shell中用spark.sql() 执行的sql就是 外部的hdfs中hive了
当然这时也可以用 spark-sql 和Spark beeline来连接hive
ideal中连接hive
连接内置的hive,也是什么都不需要做
连接外部的hive,需要spark-hvie的依赖,mysql依赖,还需要把hive的配置文件hive-site.xml 文件放入resource目录下,即可访问外部的hive