u
s
e
r
i
d
.
{datasetid}")
data.write.mode(SaveMode.Overwrite).parquet(hdfspath)
但不同时候的参数是不同的
先看一下源码:
spark-v2.3.0:
def mode(saveMode: SaveMode): DataFrameWriter[T] = {
this.mode = saveMode
* Specifies the behavior when data or table already exists. Options include:
* - `overwrite`: overwrite the existing data.
* - `append`: append the data.
* - `ignore`: ignore the operation (i.e. no-op).
* - `error` or `errorifexists`: default option, throw an exception at runtime.
* @since 1.4.0
def mode(saveMode: String): DataFrameWriter[T] = {
this.mode = saveMode.toLowerCase(Locale.ROOT) match {
case "overwrite" => SaveMode.Overwrite
case "append" => SaveMode.Append
case "ignore" => SaveMode.Ignore
case "error" | "errorifexists" | "default" => SaveMode.ErrorIfExists
case _ => throw new IllegalArgumentException(s"Unknown save mode: $saveMode. " +
"Accepted save modes are 'overwrite', 'append', 'ignore', 'error', 'errorifexists'.")
SaveMode.Overwrite(对应着字符串"overwrite"):表示如果目标文件目录中数据已经存在了,则用需要保存的数据覆盖掉已经存在的数据
SaveMode.Append(对应着字符串"append"):表示如果目标文件目录中数据已经存在了,则将数据追加到目标文件中
数据追加方式是:先将表中的所有索引删除,再追加数据
SaveMode.Ignore(对应着字符串为:“ignore”):表示如果目标文件目录中数据已经存在了,则不做任何操作
SaveMode.ErrorIfExists(对应着字符串"error"):表示如果目标文件目录中数据已经存在了,则抛异常(这个是默认的配置)
参考链接
小哇666 的博客
Spark
学习笔记(一):
Spark
概述与运行原理
Spark
学习笔记(二):RDD编程基础
Spark
SQL增加了
DataFrame
(即带有Schema信息的RDD),使用户可以在
Spark
SQL中执行SQL语句,数据既可以来自RDD,也可以是Hive、HDFS、Cassandra等外部数据源,还可以是JSON格式的数据
Spark
SQL目前支持Scala、Java、Python三种语言,支持SQL-92规范
•
DataFrame
的推出,让
Spark
具备了处理大规模结构化数据的能力,不仅比原有的
一、
Spark
SQL 统一API写出
DataFrame
数据
df.
write
.
mode
().format().option(K, V).save(PATH)
#
mode
, 传入
模式
字符串可选:append 追加,over
write
r 覆盖,ignore 忽略,error 重复就报异常(默认)
# format, 传入格式字符串,可选:text,csv,json,parquet,orc,avro,jdbc
# 注意text源只支持单列df写出
# option 设置属性,如:.option("sep", "
.option("zkHosts", hbaseMeta.zkHosts)
.option("zkPort", hbaseMeta.zkPort)
.option("hbaseTable", hbaseMeta.hbaseTable)
.option("family", hbaseMeta.family)
2,SQLContext由
Spark
Context对象创建
也可创建一个功能更加全面的HiveContext对象,HiveContext是SQLContext的子类,从API中可以看出HiveContext extends SQLContext,所...
原文链接:https://mp.toutiao.com/profile_v3/graphic/preview?pgc_id=6849695183043297804
本文主要从以下几个方面介绍
Spark
中的
DataFrame
读写和保存
第一,
DataFrame
的介绍
第二,
Spark
所支持的读写文件格式及示例
第一,
DataFrame
的介绍
DataFrame
的前身是SchemaRDD,从
Spark
1.3.0开始SchemaRDD更名为
DataFrame
。与SchemaRDD的主要区别是:Data
数据倾斜是指我们在并行进行数据处理的时候,由于数据散列引起
Spark
的单个Partition的分布不均,导致大量的数据集中分布到一台或者几台计算节点上,导致处理速度远低于平均计算速度,从而拖延导致整个计算过程过慢,影响整个计算性能。
数据倾斜带来的问题
单个或者多个Task长尾执行,拖延整个任务运行时间,导致整体耗时过大。单个Task处理数据过多,很容易导致OOM。
数据倾斜的产生原因
数据倾斜一般是发生在 shuffle 类的算子,比如 distinct、groupByKey、redu
示例代码:
val
dataframe
= sqlContext.read.parquet("读取路径")
dataframe
.
write
.
mode
("over
write
").parquet("写入路径")
over
write
是
dataframe
写入的一种
模式
,
dataframe
写入的
模式
一共有4中
def
mode
(save
Mode
: String):
DataFrame
Wri
saveAsTable
在此方法中,如果数据源表存在于
Spark
-catalog中,则使用save方法参数中的
模式
来确定如何插入。如果表不在
Spark
-catalog中,我们总是会覆盖它(比如JDBC数据源中的一个表),因为
spark
可以整合hive,所以hive中的表在
Spark
-catalog中,但比如
spark
创建的临时表,就不在
Spark
-catalog中。如果表在
Spark
-catalog中,则追加。
如果df根据一个没分区的 hive表创建,并且可以转换为hive内置的序列化器(比如ORC和P
Spark
驱动器节点,用于执行
Spark
任务中的 main 方法,负责实际代码的执行
工作。Driver 在
Spark
作业执行时主要负责:
1.1.1) 将用户查询转化为任务;
1.1.2)在 Executor 之间调度任务;
1.1.3)跟踪 Executor 的执行情况;
1.1.4)通过 UI 展示查询运行情况;
1.2Executor
1 什么是 DataX
DataX 是阿里巴巴开源的一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle 等)、HDFS、Hive、ODPS、HBase、FTP 等各种异构数据源之间稳定高效的数据同步功能。
为了解决异构数据源同步问题,DataX 将复杂的网状的同步链路变成了星型数据链路,DataX 作为中间传输载体负责连接各种数据源。当需要接入一个新的数据源的时候,只需要将此数据源对接到 DataX,便能跟已有的数据源做到无缝数据同步
3 支持的数据源
DataX .
Spark
SQL支持通过
DataFrame
接口操作的多种不同的数据源。
DataFrame
提供支持统一的接口加载和保存数据源中的数据,包括:结构化数据,Parquet文件,JSON文件,Hive表 ,以及通过JDBC连接外部数据源。
与Hive类似的,
Spark
SQL也可以创建临时表和持久表(即管理表),使用registerTempTable命令创建临时表,使用saveAsTable命令将数据...