Spark SQL----INSERT OVERWRITE DIRECTORY

Spark SQL----INSERT OVERWRITE DIRECTORY

一、描述

INSERT OVERWRITE DIRECTORY语句使用spark文件格式或Hive Serde,用新的值覆盖目录中的现有数据。使用Hive Serde必须启用Hive支持。插入的行可以由值表达式指定,也可以由查询结果指定。

二、语法

sql 复制代码
INSERT OVERWRITE [ LOCAL ] DIRECTORY [ directory_path ]
    { spark_format | hive_format }
    { VALUES ( { value | NULL } [ , ... ] ) [ , ( ... ) ] | query }

spark_format定义为

sql 复制代码
USING file_format [ OPTIONS ( key = val [ , ... ] ) ]

hive_format定义为

sql 复制代码
[ ROW FORMAT row_format ] [ STORED AS hive_serde ]

三、参数

  • directory_path
    指定目标目录。LOCAL关键字用于指定目录在本地文件系统上。在spark文件格式中,也可以使用path在OPTIONS中指定,但directory_path和path选项不能同时指定。
  • file_format
    指定用于插入的文件格式。有效选项为TEXT、CSV、JSON、JDBC、PARQUET、ORC、HIVE、LIBSVM,或org.apache.spark.sql.execution.datasources.FileFormat的自定义实现的完全限定类名。
  • OPTIONS ( key = val [ , ... ] )
    指定一个或多个用于写入文件格式的选项。
  • hive_format
    指定用于插入的文件格式。row_format和hive_serde都是可选的。ROW FORMAT SERDE只能与 TEXTFILE, SEQUENCEFILE或RCFILE一起使用,而ROW FORMAT DELIMITED只能与TEXTFILE一起使用。如果两者都没有定义,spark将使用TEXTFILE。
  • row_format
    指定此插入的行格式。有效的选项是SERDE子句和DELIMITED子句。SERDE子句可用于为此插入指定自定义SerDe。或者,DELIMITED子句可以用于指定本机SerDe并声明分隔符、转义符、null字符等。
  • hive_serde
    指定此插入的文件格式。有效选项为TEXTFILE、SEQUENCEFILE、RCFILE、ORC、PARQUET和AVRO。你也可以使用INPUTFORMAT和OUTPUTFORMAT指定自己的输入和输出格式。
  • VALUES ( { value | NULL } [ , ... ] ) [ , ( ... ) ]
    指定要插入的值。可以插入显式指定的值或NULL。必须使用逗号分隔子句中的每个值。可以指定多个值集来插入多行。
  • query
    生成要插入的行的查询。它可以是以下格式之一:
    • SELECT语句
    • Inline Table语句
    • FROM语句

四、例子

4.1 Spark format

sql 复制代码
INSERT OVERWRITE DIRECTORY '/tmp/destination'
    USING parquet
    OPTIONS (col1 1, col2 2, col3 'test')
    SELECT * FROM test_table;

INSERT OVERWRITE DIRECTORY
    USING parquet
    OPTIONS ('path' '/tmp/destination', col1 1, col2 2, col3 'test')
    SELECT * FROM test_table;

4.2 Hive format

sql 复制代码
INSERT OVERWRITE LOCAL DIRECTORY '/tmp/destination'
    STORED AS orc
    SELECT * FROM test_table;

INSERT OVERWRITE LOCAL DIRECTORY '/tmp/destination'
    ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
    SELECT * FROM test_table;
相关推荐
逸Y 仙X23 分钟前
Git常见命令--助力开发
java·大数据·git·java-ee·github·idea
逻各斯1 小时前
Redisson分布式锁java语法, 可重入性实现原理 ,(还有可重试性,超时不释放,主从一致性)
分布式
梓沂1 小时前
审计级别未启用扩展模式导致查询 DBA_AUDIT_TRAIL 时 SQL_TEXT 列为空
数据库·sql·dba
caihuayuan41 小时前
PHP建立MySQL持久化连接(长连接)及mysql与mysqli扩展的区别
java·大数据·sql·spring
B站计算机毕业设计超人1 小时前
计算机毕业设计Hadoop+Spark+DeepSeek-R1大模型民宿推荐系统 hive民宿可视化 民宿爬虫 大数据毕业设计(源码+LW文档+PPT+讲解)
大数据·hadoop·爬虫·机器学习·课程设计·数据可视化·推荐算法
WeiLai11122 小时前
面试基础--微服务架构:如何拆分微服务、数据一致性、服务调用
java·分布式·后端·微服务·中间件·面试·架构
(; ̄ェ ̄)。2 小时前
在nodejs中使用ElasticSearch(二)核心概念,应用
大数据·elasticsearch·搜索引擎
奔跑吧邓邓子2 小时前
【Python爬虫(44)】分布式爬虫:筑牢安全防线,守护数据之旅
开发语言·分布式·爬虫·python·安全
RainbowSea3 小时前
9-1. MySQL 性能分析工具的使用——last\_query\_cost,慢查询日志
数据库·sql·mysql
一个儒雅随和的男子3 小时前
Elasticsearch除了用作查找以外,还能可以做什么?
大数据·elasticsearch·搜索引擎