SparkSQL中创建外部表及使用

2024-06-18 01:18

本文主要是介绍SparkSQL中创建外部表及使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、使用需求

工作中经常会需要与外围系统打交道,由于外围系统和本系统不处于同一个Hadoop集群下,且不具有访问本系统的权限,所以基本上大数据量的接口都是以文件的方式进行传输。如何快速、便捷的将文件入Spark库中?

通过SparkSQL中创建外部表的方式就能够很好地解决这一需求。

二、解决方案

1. hdfs上创建存放外部表数据文件的目录

hdfs dfs -mkdir -p /hupeng/data/ods_user_base

注意到,如果要创建多级目录时,需要加上-p参数。

2. 创建外部表

create external table ods_user_base (acc_nbr string comment '用户号码',product_type string comment '产品类型',cust_id string comment '客户ID',prd_inst_id string comment '产品实例ID',latn_id  string comment '所在地市',area_id string comment '所在区县'
)
row format delimited fields terminated by '|'
lines terminated by '\n'
stored as textfile location 'hdfs://streamcluster/hupeng/data/ods_user_base';

3. 准备数据文件

为了测试如果数据文件的部分字段数据缺失,外部表是否会报错。特意准备了如下内容的数据:

4. 将数据文件put进hdfs中对应的外部表目录

注意到,如果hdfs中外部表目录下数据文件存在的情况,需要替换掉该文件的时候可以加上 -f 参数。

5. 查看外部表数据是否正常

通过上图可以发现,如果数据文件中部分字段的值缺失,在外部表中会以null显示,并不会报错。

6. 测试数据文件中的字段值的个数大于外部表字段的个数情况

1)数据文件

图中红框的值是多余的。

2)数据文件put到hdfs中

 hdfs dfs -put -f ./ods_user_data.txt /hupeng/data/ods_user_base 

put的时候没有报错。

3)查看外部表数据

也没有报错,只是多余的值没有显示出来。

这篇关于SparkSQL中创建外部表及使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1070900

相关文章

如何使用C#串口通讯实现数据的发送和接收

《如何使用C#串口通讯实现数据的发送和接收》本文详细介绍了如何使用C#实现基于串口通讯的数据发送和接收,通过SerialPort类,我们可以轻松实现串口通讯,并结合事件机制实现数据的传递和处理,感兴趣... 目录1. 概述2. 关键技术点2.1 SerialPort类2.2 异步接收数据2.3 数据解析2.

详解如何使用Python提取视频文件中的音频

《详解如何使用Python提取视频文件中的音频》在多媒体处理中,有时我们需要从视频文件中提取音频,本文为大家整理了几种使用Python编程语言提取视频文件中的音频的方法,大家可以根据需要进行选择... 目录引言代码部分方法扩展引言在多媒体处理中,有时我们需要从视频文件中提取音频,以便进一步处理或分析。本文

C#原型模式之如何通过克隆对象来优化创建过程

《C#原型模式之如何通过克隆对象来优化创建过程》原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复的创建成本和复杂的初始化过程,它适用于对象创建过程复杂、需要大量相似对象或避免重复初... 目录什么是原型模式?原型模式的工作原理C#中如何实现原型模式?1. 定义原型接口2. 实现原型接口3

使用Dify访问mysql数据库详细代码示例

《使用Dify访问mysql数据库详细代码示例》:本文主要介绍使用Dify访问mysql数据库的相关资料,并详细讲解了如何在本地搭建数据库访问服务,使用ngrok暴露到公网,并创建知识库、数据库访... 1、在本地搭建数据库访问的服务,并使用ngrok暴露到公网。#sql_tools.pyfrom

使用mvn deploy命令上传jar包的实现

《使用mvndeploy命令上传jar包的实现》本文介绍了使用mvndeploy:deploy-file命令将本地仓库中的JAR包重新发布到Maven私服,文中通过示例代码介绍的非常详细,对大家的学... 目录一、背景二、环境三、配置nexus上传账号四、执行deploy命令上传包1. 首先需要把本地仓中要

Spring Cloud之注册中心Nacos的使用详解

《SpringCloud之注册中心Nacos的使用详解》本文介绍SpringCloudAlibaba中的Nacos组件,对比了Nacos与Eureka的区别,展示了如何在项目中引入SpringClo... 目录Naacos服务注册/服务发现引⼊Spring Cloud Alibaba依赖引入Naco编程s依

Java springBoot初步使用websocket的代码示例

《JavaspringBoot初步使用websocket的代码示例》:本文主要介绍JavaspringBoot初步使用websocket的相关资料,WebSocket是一种实现实时双向通信的协... 目录一、什么是websocket二、依赖坐标地址1.springBoot父级依赖2.springBoot依赖

Java使用Mail构建邮件功能的完整指南

《Java使用Mail构建邮件功能的完整指南》JavaMailAPI是一个功能强大的工具,它可以帮助开发者轻松实现邮件的发送与接收功能,本文将介绍如何使用JavaMail发送和接收邮件,希望对大家有所... 目录1、简述2、主要特点3、发送样例3.1 发送纯文本邮件3.2 发送 html 邮件3.3 发送带

使用DeepSeek搭建个人知识库(在笔记本电脑上)

《使用DeepSeek搭建个人知识库(在笔记本电脑上)》本文介绍了如何在笔记本电脑上使用DeepSeek和开源工具搭建个人知识库,通过安装DeepSeek和RAGFlow,并使用CherryStudi... 目录部署环境软件清单安装DeepSeek安装Cherry Studio安装RAGFlow设置知识库总

Python FastAPI入门安装使用

《PythonFastAPI入门安装使用》FastAPI是一个现代、快速的PythonWeb框架,用于构建API,它基于Python3.6+的类型提示特性,使得代码更加简洁且易于绶护,这篇文章主要介... 目录第一节:FastAPI入门一、FastAPI框架介绍什么是ASGI服务(WSGI)二、FastAP