hive外部表详解以及案例演示

yizhihongxing

Hive外部表详解以及案例演示

Hive是一个基于Hadoop的数据仓库工具,它提供了类似于SQL的查询语言HiveQL,可以将结化数据映射到Hadoop的分布式文件系统HDFS上。Hive支持部表和外部表,本攻略将详细介绍H外部表的概念、用法和案例演示。

1. 外部表的概念

外部表是指在Hive中定义的表,它的数据存储在HDFS上,但是表的元数据存储在Hive的元数据仓库中。与内部表不同,外部表的数据可以被其他程序或工具访问和修改,而不会影响到Hive中的元数据。外部表的定义语法与内部表相同,只需要在创建表时添加“EXTERNAL”关键字即可。

2. 外部表的用法

外部表的用法与内部表类似,可以使用HiveQL语言来查询和操作外部表。但是,需要注意以下几点:

  • 删除外部表时,只会删除表的元数据,而不会删除HDFS上的数据。
  • 在加载数据时,需要使用“LOAD DATA INPATH”命令来指定数据的路径,而不是使用“INSERT INTO”命令。
  • 在查询数据时需要使用“SELECT * FROM”命令来查询数据,而不是使用“SELECT INTO”命令。

3. 外部表的案例演示

以下是两个使用外部表的案例演示:

案例1:创建外部表并加载数据

假设一个包含学生信息文本文件,文件名为“students.txt”,包含以下内容:

1,John,18
2,Mary,19
3om,20
4,Lucy,18

现在需要将这个文件加载到Hive中,并创建一个外部表来查询和操作这些数据。可以按照以下步骤进行:

  1. 将文件上传到HDFS上
hdfs dfs -put students.txt /user/h/students.txt

在上面的命令中,使用“hdfs dfs -put”命令将文件上传到HDFS上。

  1. 创建外部表
CREATE EXTERNAL TABLE students (
    id INT,
    name STRING,
    age INT
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
LOCATION '/user/hive/students.txt';

在上面的命令中,使用“CREATE EXTERNAL TABLE”命令来创建外部表,“ROW FORMAT DELIMITED”选项来指定行格式,“FIELDS TERMINATED BY”选项来指定字段分隔符,“LINES TERMINATED BY”选项来指定行分隔符,“LOCATION”选项来指定数据的路径。

  1. 查询
SELECT * FROM students;

在上面的命令中,使用“SELECT * FROM”命令来查询数据。

案例2:使用外部表进行数据分析

假设有一个包含销售数据的文本文件,文件名为“sales.txt”,包含以下内容:

2019--01,100
2019-01-02,200
2019-01-03,300
201901-04,400
2019-01-05,500

现在需要使用Hive来分析这些销售数据,并计算出每天的销售总额和平均销售额。可以按照以下步进行:

  1. 将文件上传到HDFS上
hdfs dfs -put sales.txt /user/hive/sales.txt

在上面的命令中,使用“hdfs dfs -put”命令将文件上传到HDFS上。

  1. 创建外部表
CREATE EXTERNAL TABLE sales (
    date STRING,
    amount INT
)
ROW DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
LOCATION '/user/hive/sales.txt';

在上面的命令中,使用“CREATE EXTERNAL TABLE”命令来创建外部表,“ROW FORMAT DELIMITED”选项来指定行格式,“FIELDS TERMINATED BY”选项来指定字段分隔符,“LINES TERMINATED BY”选项来指定行分隔符,“LOCATION”选项来指定数据的路径。

  1. 计算销售总额和平均销售额
SELECT date, SUM(amount) AS total_sales, AVG(amount) AS avg_sales
FROM sales
GROUP BY date;

在上面的命令中,使用“SELECT”命令来查询数据,并使用“SUM”函数和“AVG”函数来计算销售总额和平均销售额。

总的来说,外部表是Hive中非常重要的一个概念,它可以将Hive与其他程序或工具进行无缝集成,实现更加灵活和效的数据处理和分析。在使用外部表时,需要注意一些细节问题,例如删除表时只删除元数据、加载数据时使用“LOAD DATA INPATH”令等。同时,外部表也可以用于各种数据分析场景,例如计算销售总额和平均销售额等。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:hive外部表详解以及案例演示 - Python技术站

(0)
上一篇 2023年5月8日
下一篇 2023年5月8日

相关文章

  • 利用Android实现比较炫酷的自定义View

    实现自定义View可以通过继承View或者ViewGroup类的方式,然后在重写相应的方法并添加相应的逻辑来实现。 以下是实现比较炫酷的自定义View的完整攻略: 1.确定需求 在开始开发之前,首先要明确自己开发的自定义View的功能和用途,需要考虑以下几个问题: 自定义View的基本形态和样式是怎样的? 自定义View需要支持那些交互操作,例如点击、滑动等…

    other 2023年6月25日
    00
  • Java处理表格的实用工具库

    Java处理表格的实用工具库 在Java开发中,有许多实用的工具库可用于处理表格数据。以下是使用两个常用的Java表格处理工具库的详细攻略: Apache POI Apache POI是一个流行的Java库,用于读取、写入和操作Microsoft Office格式的文件,包括Excel表格。以下是使用Apache POI处理表格的示例说明: 首先,确保已经添…

    other 2023年10月15日
    00
  • 如何在Linux中自定义bash命令提示符

    要在Linux中自定义bash命令提示符,可以使用PS1环境变量。PS1环境变量是控制bash命令提示符的变量,可以修改该变量的值来自定义命令提示符的样式。 下面是自定义bash命令提示符的步骤: 打开终端并登录到Linux系统。 使用文本编辑器编辑.bashrc文件,该文件包含了每次打开终端时需要运行的命令。 $ vi ~/.bashrc 在文件末尾添加以…

    other 2023年6月27日
    00
  • Spring创建IOC容器的方式解析

    Spring创建IOC容器的方式解析 Spring是一个强大的Java开发框架,它提供了多种方式来创建IOC(控制反转)容器,用于管理和组织应用程序中的对象。以下是Spring创建IOC容器的几种常见方式: 1. XML配置文件方式 使用XML配置文件是最传统和常见的创建IOC容器的方式。在XML配置文件中,我们可以定义Bean的名称、类型、依赖关系等信息。…

    other 2023年10月17日
    00
  • C++中的const

    C++中的const 在C++中,const是常用的关键字之一,它被用于定义常量或者修饰函数参数,可以防止程序因为不小心修改常量而产生错误,从而提高代码的稳定性。在本篇文章中,我们将讨论如何在C++中使用const关键字。 定义常量 定义常量可以通过将一个变量定义为const const int NUM = 10; 这里的NUM被定义为一个常量,它的值不能被…

    其他 2023年3月28日
    00
  • shell实现同时操作多个服务器:服务器批量管理

    Shell实现同时操作多个服务器: 服务器批量管理 简介 服务器的数量随着公司的发展和业务的扩大日渐增多,对于运维人员而言,服务器的管理和维护是一个重要的任务,而批量管理服务器是大大减少管理时间和提高工作效率的一个好方法。本文介绍如何使用Shell脚本实现同时操作多个服务器的批量管理。 环境准备 在使用Shell脚本批量管理服务器之前,需要确保目标服务器与操…

    其他 2023年3月28日
    00
  • java用类加载器的5种方式读取.properties文件

    Java用类加载器的5种方式读取.properties文件 1. 使用ClassLoader.getResourceAsStream() 这是最常见的一种方式,可以通过类加载器来加载.properties文件,并返回一个InputStream对象,可以进一步读取文件内容。 String fileName = "config.properties&q…

    other 2023年6月28日
    00
  • Android实现文件的保存与读取功能示例

    当使用Android开发时,实现文件的保存与读取功能是一个常见的需求。下面是一个详细的攻略,包含两个示例说明。 文件保存功能示例 步骤1:添加权限 在AndroidManifest.xml文件中添加以下权限: <uses-permission android:name=\"android.permission.WRITE_EXTERNAL_S…

    other 2023年9月6日
    00
合作推广
合作推广
分享本页
返回顶部