黑洞

这里藏着一些独特的想法

0%

本文只是站长的学习记录,内容并不完善,有时间继续补充。

Driver初始化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from pyspark.sql import SparkSession
import os

# 设置环境变量
os.environ['SPARK_HOME'] = '/export/server/spark'
PYSPARK_PYTHON = "/root/anaconda3/envs/pyspark_env/bin/python"
# 当存在多个版本时,不指定很可能会导致出错
os.environ["PYSPARK_PYTHON"] = PYSPARK_PYTHON
os.environ["PYSPARK_DRIVER_PYTHON"] = PYSPARK_PYTHON

if __name__ == '__main__':
# todo 创建spark会话
spark = SparkSession.builder \
.appName('first app') \
.master('local[*]') \
.getOrCreate()

sc = spark.sparkContext

"""
master(driver运行的地方)可指定为以下几种:
本地模式 'local[*]'
Standalone 'spark://node1:7077'
Standalone高可用 'spark://node1:7077,node2:7077'
Yarn集群 'yarn-cluster'
Yarn客户端 'yarn-client'
"""

# 结束运行
spark.stop()
阅读全文 »

本文只是站长的学习记录,内容并不完善。

RDD

定义

RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,代表一个不可变(只读)、可分区、可并行计算的集合。

  • Dataset:一个数据集合,用于存放数据的。
  • Distributed:RDD中的数据是分布式存储的,可用于分布式计算。
  • Resilient:RDD中的数据可以存储在内存中或者磁盘中。
阅读全文 »

概述

Hive支持索引,但是Hive的索引与关系型数据库中的索引并不相同,比如,Hive不支持主键或者外键。

Hive索引可以建立在表中的某些列上,以提升一些操作的效率,例如减少MapReduce任务中需要读取的数据块的数量。

在可以预见到分区数据非常庞大的情况下,分桶和索引常常是优于分区的。而分桶由于SMB Join对关联键要求严格,所以并不是总能生效。

阅读全文 »

explode 函数

简介

explode函数属于UDTF函数(表生成),输入一行,输出多行。从英文直译过来是“爆炸”的意思,因此俗称爆炸函数。

语法和效果

explode函数接收map或者array类型的数据作为参数。在生成的表中,每个元素将单独成为一行数据。

  • explode(array)array列表里的每个元素生成一行;
  • explode(map)map里的每一对元素作为一行,其中key为一列,value为一列;
阅读全文 »

概述

数据倾斜在MapReduce计算框架中经常发生。通俗理解,该现象指的是在整个计算过程中,大量相同的key被分配到了同一个任务上,造成“一个人累死、其他人闲死”的状况,这违背了分布式计算的初衷,使得整体的执行效率十分低下。

日常工作中数据倾斜主要发生在Reduce阶段,而很少发生在Map阶段,其原因是Map端的数据倾斜一般是由于HDFS数据存储不均匀造成的(公司的日志存储几乎都是均匀分块存储,每个文件大小基本固定),而Reduce阶段的数据倾斜几乎都是因为分析师没有考虑到某种key值数据量偏多的情况而导致的。

阅读全文 »

概述

Hive中为了实现JSON格式的数据解析,提供了两种解析JSON数据的方式,在实际工作场景下,可以根据不同数据,不同的需求来选择合适的方式对JSON格式数据进行处理。

  • 方式一:使用JSON函数进行处理
    Hive中提供了两个专门用于解析JSON字符串的函数:get_json_objectjson_tuple,这两个函数都可以实现将JSON数据中的每个字段独立解析出来,构建成表。
  • 方式二:使用Hive内置的JSON Serde加载数据
    Hive中除了提供JSON的解析函数以外,还提供了一种专门用于加载JSON文件的Serde来实现对JSON文件中数据的解析,在创建表时指定Serde,加载文件到表中,会自动解析为对应的表格式。
阅读全文 »

概述

Sqoop是Apache旗下一款ETL工具,用于Hadoop和RDBMS之间传送数据。

工作原理:将命令转换为MapReduce程序实现。

导入数据:MySQL、Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统。

导出数据:从Hadoop的HDFS、HIVE中导出数据到关系数据库MySQL等。

阅读全文 »

关于生活

上周的生活一如既往的普通,没有惊喜。只是我的生物钟一直倒不过来,昼伏夜出,上班迟到了好几次了。我也不想啊,老板在上班之前给我画饼,现在又让员工做非本职的工作,pua我们说不这样就是没吃过生活的苦。我吐了。

昨天在抖音上看到嘉兴一位女孩穿着漂亮的衣服坐在天台轻生被消防员救下。评论里多数都是赞美消防员的,这并没有什么错。在以前,这种视频大家的关注点都在轻生者上,现在反而都在救援者上。显然,人心渐渐变得冷漠,大家现在并不在意与自身毫无相干因生活绝望的轻生者,认为他们愚蠢,幼稚,活该。毕竟事情没有发生在他们身上,共情个屁。只能说,生活的压力下,人们都变的更加现实。

阅读全文 »