大数据学习日志(一)————基础知识

Hive

概述

  1. Hive是Hadoop的的子工程,后来被独立出来成为Apache的顶级项目
  2. Hive是Apache提供的一套基于Hadoop的进行数据仓库管理的工具,提供了读写以及管理大量数据的功能
  3. Hive提供了大量的类SQL(Hive QL,简称HQL)来对Hadoop的数据进行操作,底层会将SQL转换为MapReduce来执行,所以适合离线处理
  4. 每一个Database都会在HDFS上对应一个目录
  5. Hive中没有主键的概念
  6. 在Hive中,一个表创建好之后,字段之间的间隔符号就无法更改了
  7. Insert into表示追加,Insert overwrite表示覆盖(如果新插入的内容为空,就相当于清空表)
  8. 因为Hive操作的是HDFS上的数据,所以Hive不提供修改和删除命令。数据不能删除,但是目录可以删除
HQL解释
show databases;显示所有数据库
create database demo;创建
drop database demo;删除表
load data local inpath ‘/home/hivedemo/person.txt’ into table person;从本地文加载数据
truncate table …清空表数据
create table … like …创建一个一样的表
insert overwrite local directory ‘/home/hivedata’ row format delimited fields terminated by ’ ’ select * from person where age <= 19;将hive(hdfs)中的数据放到本地,必须用overwrite,这个路径必须不存在
insert overwrite directory ‘/person’ row format delimited fields terminated by ‘,’ select * from person where id <= 3;将表中数据查询出来放到HDFS下,只能用overwrite,用into报错
alter table … rename to …修改表名称
alter table p5 add columns(gender String,address String);添加列,初始值为null

表结构

  1. 内部表:在Hive中手动创建表、手动添加数据的表

  2. 外部表:在Hive中,需要创建表来管理HDFS中已经存在的数据

    • 创建表语句:create external table flow (phone String,city String,name String,flow int) row format delimited fields terminated by ’ ’ location ‘/txt/flow’;
    • 内部表被删除时对应的目录会立即从HDFS中移除,外部表被删除时对应的数据并不会删除
    • 在实际生产过程中,一般在数据处理时回先创建一个外部表
  3. 分区表:

    • 作用:对数据进行分类
    • 建表语句:create table citied (id int,name String )partitioned by(province string) row format delimited fields terminated by ’ ';
    • 加载数据:load data local inpath ‘/home/hivedemo/guangdong.txt’ into table cities partition(province = ‘guangdong’);
    • 每一个分区在HDFS上对应一个目录,如果在查询的时候指定了分区,那么查询效率就相对而言较高,如果查询时跨分区,效率就较低
    • 批量修复:msck repair table cities;,就是添加所有的分区
    • 删除分区:alter table cities drop partition(province = ‘henan’)
    • 修改分区名:alter table cities partition(province=‘shanxi’) rename to partition(province=‘hebei’)
    • 多字段分区:在Hive中,允许使用多字段分区,前一个字段形成的目录会包含后一个字段,而在实际开发中,如果数据存在大类小类分区的情况,那么就需要使用多字段分区,例如:年级-班级,省-市-区等
      • 建表语句:crete table student (id int,name string )partitioned by (grade string,class string)row format delimited fields terminated by ’ ’
      • 加载数据:load data local inpath ‘/home/hivedemo/g1c1.txt’ ubti table student partition(grade = ‘1’,class = ‘1’);
      • 在Hive中,分区表中的分区字段在原始数据中是并不存在的,而是加载的数据手动指定的
      • 动态分区:如果分区字段已经被包含在原始数据中,那么需要使用动态分区
        1. 先创建一个表来管理原始数据
        2. 加载数据
        3. 开启非严格模式:set hive.exec.dynamic.partition.mode=nonstrict;
        4. 动态分区-从未分区表中查询数据放到已经分区的表中:insert into table cities partition(province )select cid,cname.cpro from c_tmo distribute by cpro;
  4. 分桶表:

    • 分桶表的作用是对数据进行抽样

    • 实例:

      • 开启分桶机制:set hive.enforce.bucketing = true;
      • 建立分桶表:根据name字段分桶,将数据分到6个桶中,在底层会先计算name字段的值得到哈希码,然后对哈希码进行二次运算,使得这个值落到6个桶中的某一个上:create table c_bucket(id int,name string) clustered by(name) into 6 buckets row format delimited fields terminated by ’ ';向分桶表中添加数据,只能insert方式添加才能分桶,不能利用load的方式进行添加
      • 抽样:bucket X out of Y,X表示起始桶的编号,Y表示步长,bucket 1 out of 3 表示从1号桶开始抽取,每隔3个桶抽一次:select * from c_bucket tablesample(bucket 1 out of 3 on name)
      • 分桶表的核心思想是先根据值的哈希码来进行分桶(实际上就是数据被打散到各个桶中),然后再抽取指定的桶的数据
      • 一个表既可以是分区表也可以是分桶表,先对数据进行分类,分类只有在对每一类数据进行抽样
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Spark是一个开源的大数据处理框架,它可以在分布式计算集群上进行高效的数据处理和分析。Spark的特点是速度快、易用性高、支持多种编程语言和数据源。Spark的核心是基于内存的计算模型,可以在内存中快速地处理大规模数据。Spark支持多种数据处理方式,包括批处理、流处理、机器学习和图计算等。Spark的生态系统非常丰富,包括Spark SQL、Spark Streaming、MLlib、GraphX等组件,可以满足不同场景下的数据处理需求。 ### 回答2: Spark是一个分布式计算框架,其出现是为了解决Hadoop MapReduce计算模型中的许多性能问题。与MapReduce相比,Spark的计算速度更快,因为它可以在内存中缓存数据并使用更高效的调度算法。此外,Spark还支持多种语言,包括Scala、Java、Python和R等。 Spark有多个模块,包括Spark Core、Spark SQL、Spark Streaming、Spark MLlib和Spark GraphX等。Spark Core是Spark的基本组件,在其中实现了RDD这种抽象数据结构,它可以将数据分布在多台计算机上,从而实现分布式计算。Spark SQL提供了用于处理结构化数据的API和查询语言,它允许将Spark与现有的SQL工具和数据源一起使用。Spark Streaming可以在实时流处理中使用Spark来处理数据,并提供了与常见的消息队列和流处理系统的无缝集成。Spark MLlib提供了许多机器学习算法,可以在分布式环境中进行大规模的机器学习。Spark GraphX是用于图计算的组件,可以用于处理较大的网络图和社交网络图等。 Spark可以在各种场景下使用,例如大型金融数据分析、人工智能、机器学习和图计算等领域。与Hadoop相比,Spark具有更快的速度、更轻量的资源消耗和更广泛的开源社区支持,已经成为许多大规模数据分析和处理项目的首选技术之一。 总之,Spark是一个功能强大的分布式计算框架,具有快速、灵活和多语言支持等特点,并且在实际应用中表现出色,是大数据学习中不可或缺的重要技术之一。 ### 回答3: Spark是一个快速、通用、分布式计算引擎,可以在大规模数据集上进行高效的数据处理。Spark是基于内存的计算引擎,可以将数据存储在内存中,从而提高计算速度。Spark支持多种编程语言,包括Java、Scala、Python和R,因此很容易上手,并且可以适应各种应用场景。 Spark的核心组件包括Spark SQL、Spark Streaming、Spark MLlib和Spark GraphX等,在处理不同类型的数据上都具有很强的适应性。Spark SQL可以处理结构化数据,Spark Streaming可以实现实时数据处理,Spark MLlib可以进行机器学习任务,Spark GraphX可以处理图形数据。此外,Spark还提供了一个交互式的shell,方便用户测试和调试代码。 在分布式环境下,Spark使用集群模式进行计算。集群中的每个节点都有自己的内存和CPU资源,Spark通过将任务分发到不同的节点上进行并行计算以提高计算速度。Spark还提供了一些高级特性,如广播变量、累加器和检查点等,以提高计算性能和可靠性。 在大数据处理方面,Spark有着广泛的应用场景。例如,Spark可以用于数据清洗和转换、数据仓库构建、实时数据处理和机器学习等任务。Spark还支持多种数据源,包括关系型数据库、Hadoop HDFS、NoSQL数据库和云存储等,这些数据源都可以与Spark集成,以进行数据分析和处理。 总之,Spark是一个非常重要和流行的大数据处理工具,它有强大的功能和广泛的应用场景。对于想要学习大数据处理的人来说,掌握Spark是必不可少的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜色如墨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值