SparkSQL 读写_Hive_创建 Hive 表 | 学习笔记

简介: 快速学习 SparkSQL 读写_Hive_创建 Hive 表

开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段SparkSQL 读写_Hive_创建 Hive 表】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/690/detail/12059


SparkSQL 读写_Hive_创建 Hive 表

 

内容介绍:

一、步骤

二、实操

 

接下来的内容主要学习如何使用 SparkSQL 访问 Hive 中的表。在该大环节中应该分为两个部分。

第一部分,如何使用 Hive 创建表,只有先创建表,才能谈论如何去访问表;第二部分,SparkSQL 如何访问表。本节课主要学习在 Hive 中创建表。

 

一、步骤

1、上传文件

前面的内容提过 Hive 的表其实对应了 HDFS 上的文件,则应去 Hive 上传文件。将文件上传到集群中,使用如下命令上传到 HDFS 中:

hdfs dfs -mkdir-p/dataset

hdfs dfs -put studenttabl10k/dataset/

2、使用 SQL 语句创建外部表

使用 Hive 或者 Beeline 执行如下 SQL:

CREATE DATABASE IF NOT EXISTS spark_integrition;

USE spark_integrition;

CREATE EXTERNAL TABLE student

{

name STRING

age INT,

gpa string

}

ROW FORMAT DELIMITED

FIELDS TERMINATED BY '\t'

LINES TERMINATED BY '\n'

STORED AS TEXTFILE

LOCATION'/dataset/hive';

LOAD DATA INPATH '/dataset/studenttab10k'OVERWRITE INTO TABLE student;

 

二、实操

1、上传文件

进入到 spark 的目录下,在目录下当中有一个文件夹叫做 Files,打开它,其中有一个叫做 Datesite 的文件夹,其中有叫做 student10k 的文件,该文件大致有 1 万条数据,接下来,将文件上传到 Hive。

在上传之前,也可以先看一下文件的格式,部分如下:

image.png

中间是制表符分隔,整体是三列的数据,即今天所使用的数据。打开代码编辑窗口,进入到 root 用户的目录下。

点击右键找到 Upload to current folder(如果使用的是其他工具,只需要按照相应的工具进行操作即可)。

找到 c 盘对应的文件夹 Spark/Files/Detaset 中的 studenttab10k ,点击打开即会自动上传到文件夹下,上传成功后,将其拷贝到 export/Dateset 的目录中,覆盖原文件,进入到目录中即可(cd/export/dataset)。实际上此时任务并未完成,因为 Hive 一般情况下会把文件放在 HDFS 上,因此,要把文件给上传到 HDFS 中,即输入 hdfs dfs mkdir -p/dataset 创建对应的文件夹 dataset。

文件夹创建好之后,将 studenttab10k 文件放入 dataset 文件夹(hdfs dfs -put studenttab10k /dataset),此时即成功上传文件。使用 hdfs dfs -ls/dataset 查看 dataset,可以发现其中一文件叫做 studenttab10k。

2、使用 SQL 语句创建外部表

打开 Hive 或者 Beeline 命令行,执行一段 SQL 语句,先创建数据库,之后创建表,并加载数据到表中。

输入 hive(为了简单便捷,不演示 Beeline),等待 hive 命令行的开启。开启之后,先 create database if not exists spark01(创建的数据库的名字为 spark01)创建库。创建成功之后,输入 use spark01,然后创建表,表自动创建到库中。

create external  table student

{

name STRING

age INT

gpds FLOAT

}

//对于 student 要往其中去定义一些列,参照看过文件格式,

第 一列是 String 类型的 Name 列,接下来是 int 类型的 age 列,接下来是 float 类型的分数列。整个表创建完成。

//创建好表和表里面的 schema 以后,即指定一些表的信息,如:

row format delimited fields terminated by '\t'lines terminated  by '\n'stored as TEXTFILE location '/dateset/hive';

//row format 分隔符,fields 之间的分隔符'\t'制表符,也可以指定 lInes terminate,字段之间的分隔符叫制表符,行之间的分隔符是-n 换行。

//stored as 指定文件的存储格式,如果是 parqute,则指定 parqute;是 orc 便指定 orc;是 text file(文本文件)

//location '/dateset/hive'指定 location,而 location 对应在 dateset 下的 hive,即创建表时,要将内容放在 hive 目录下。“;”结束语句。

hive>show tables;

//输出结果显示表 student 已经创建完成,

hive>desc student;

//查看表是否有问题,输出结果显示表没有问题。

hive>select * from student

//使用表 student 进行查询,显示结果显示其中已有数据,这是因为之前的 hive 目录下已有数据。

hive>load data inpath '/dateset/studenttable10k'Overwrite into table student

//为了消除原始的数据,可以模拟 load 操作。在正常情况下,我们需要 load data inpath,即在 HDFS 的 dateset 目录下的 studenttable10k 文件中。

//Overwrite 是选择加载数据的模式,加载数据的模式有覆盖、追加等,此处是为了消除原始数据,则显然是应该 Overwrite(覆盖)。

//into table studenti 添加到 student 表中。

//至此数据已经成功加载

hive>select * from student limit 10;

//再次使用表 student 进行查询,使用 limit 限制显示的数量此时即会显示对应数据

以上即为创建 Hive 表的整个过程,对应的内容和语句以上讲义中已经提到,大家可以进行复制创建表即可。

相关文章
|
5月前
|
SQL 存储 HIVE
Hive中的表是如何定义的?请解释表的结构和数据类型。
Hive中的表是如何定义的?请解释表的结构和数据类型。
90 0
|
4月前
|
SQL 缓存 关系型数据库
ClickHouse(19)ClickHouse集成Hive表引擎详细解析
Hive引擎允许对HDFS Hive表执行 `SELECT` 查询。目前它支持如下输入格式: -文本:只支持简单的标量列类型,除了 `Binary` - ORC:支持简单的标量列类型,除了`char`; 只支持 `array` 这样的复杂类型 - Parquet:支持所有简单标量列类型;只支持 `array` 这样的复杂类型
164 1
|
5月前
|
SQL 关系型数据库 MySQL
Hive 表注释乱码解决
Hive元数据在MySQL默认使用`latin1`字符集导致注释乱码。可通过修改MySQL配置文件`/etc/my.cnf`,在`[mysqld]`和末尾添加`character-set-server=utf8`等设置,重启MySQL。然后在Hive数据库中调整表字段、分区字段、索引注释的字符集。注意,这仅对新表生效。测试创建带注释的Hive表,问题解决。
|
5月前
|
SQL HIVE
Hive表删除数据不支持使用Delete From...
Hive表删除数据不支持使用Delete From...
161 0
|
5月前
|
SQL 存储 分布式计算
【Hive】hive内部表和外部表的区别
【4月更文挑战第14天】【Hive】hive内部表和外部表的区别
|
5月前
|
SQL 存储 分布式计算
Hive【基础 01】核心概念+体系架构+数据类型+内容格式+存储格式+内外部表(部分图片来源于网络)
【4月更文挑战第6天】Hive【基础 01】核心概念+体系架构+数据类型+内容格式+存储格式+内外部表(部分图片来源于网络)
110 1
|
5月前
|
SQL 数据库 HIVE
Hive【基础知识 05】常用DDL操作(数据库操作+创建表+修改表+清空删除表+其他命令)
【4月更文挑战第8天】Hive【基础知识 05】常用DDL操作(数据库操作+创建表+修改表+清空删除表+其他命令)
80 0
|
5月前
|
SQL 消息中间件 Kafka
Flink部署问题之hive表没有数据如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
|
5月前
|
SQL JSON 算法
hive学习笔记
hive学习笔记
|
5月前
|
SQL 分布式计算 关系型数据库
Sqoop数据导入到Hive表的最佳实践
Sqoop数据导入到Hive表的最佳实践
下一篇
无影云桌面