随笔分类 - Spark
-
Spark SQL ThriftServer
摘要:Spark SQL ThriftServer 启动命令 默认情况下,Spark 日志目录 SPARK_LOG_DIR 指向 SPARK_HOME/logs,如因权限访问控制,可以通过显示设置环境变量 SPARK_LOG_DIR,将日志目录指向其它路径,如: export SPARK_LOG_DIR= 阅读全文
-
Spark使用CombineTextInputFormat缓解小文件过多导致Task数目过多的问题
摘要:目前平台使用Kafka + Flume的方式进行实时数据接入,Kafka中的数据由业务方负责写入,这些数据一部分由Spark Streaming进行流式计算;另一部分数据则经由Flume存储至HDFS,用于数据挖掘或机器学习。HDFS存储数据时目录的最小逻辑单位为“小时”,为了保证数据计算过程中的数 阅读全文
-
Spark RDD Persistence
摘要:Spark最为重要的特性之一就是可以在多个操作(Action)之间,将一个或多个RDD关联的数据集(Dataset)以分区(Partition)为单位进行持久化(Persist)或缓存(Cache),存储介质通常是内存(Memory)。被持久化或缓存的RDD A可以在两种情况下被很好地“重复”利用:... 阅读全文
-
Spark RCFile的那些“坑”
摘要:RCFile在平台的应用场景中多数用于存储需要“长期留存”的数据文件,在我们的实践过程中,RCFile的数据压缩比通常可以达到8 : 1或者10 : 1,特别适用于存储用户通过Hive(MapReduce)分析的结果。目前平台的计算引擎正逐步由Hadoop MapReduce迁移至Spark,存储方... 阅读全文
-
Spark PySpark数据类型的转换原理—Writable Converter
摘要:Spark目前支持三种开发语言:Scala、Java、Python,目前我们大量使用Python来开发Spark App(Spark 1.2开始支持使用Python开发Spark Streaming App,我们也准备尝试使用Python开发Spark Streaming App),在这期间关于数据... 阅读全文
-
Spark Streaming fileStream实现原理
摘要:fileStream是Spark Streaming Basic Source的一种,用于“近实时”地分析HDFS(或者与HDFS API兼容的文件系统)指定目录(假设:dataDirectory)中新近写入的文件,dataDirectory中的文件需要满足以下约束条件:(1)这些文件格式必须相同,... 阅读全文
-
Spark SQL利器:cacheTable/uncacheTable
摘要:Spark相对于Hadoop MapReduce有一个很显著的特性就是“迭代计算”(作为一个MapReduce的忠实粉丝,能这样说,大家都懂了吧),这在我们的业务场景里真的是非常有用。假设我们有一个文本文件“datas”,每一行有三列数据,以“\t”分隔,模拟生成文件的代码如下:执行该代码之后,文本... 阅读全文
-
Spark SQL inferSchema实现原理探微(Python)
摘要:使用Spark SQL的基础是“注册”(Register)若干表,表的一个重要组成部分就是模式,Spark SQL提供两种选项供用户选择:(1)applySchemaapplySchema的方式需要用户编码显示指定模式,优点:数据类型明确,缺点:多表时有一定的代码工作量。(2)inferSchema... 阅读全文
-
Spark(Hive) SQL中UDF的使用(Python)
摘要:相对于使用MapReduce或者Spark Application的方式进行数据分析,使用Hive SQL或Spark SQL能为我们省去不少的代码工作量,而Hive SQL或Spark SQL本身内置的各类UDF也为我们的数据处理提供了不少便利的工具,当这些内置的UDF不能满足于我们的需要时,Hi... 阅读全文
-
Spark(Hive) SQL数据类型使用详解(Python)
摘要:Spark SQL使用时需要有若干“表”的存在,这些“表”可以来自于Hive,也可以来自“临时表”。如果“表”来自于Hive,它的模式(列名、列类型等)在创建时已经确定,一般情况下我们直接通过Spark SQL分析表中的数据即可;如果“表”来自“临时表”,我们就需要考虑两个问题:(1)“临时表”的数... 阅读全文
-
Spark如何解决常见的Top N问题
摘要:需求假设我们有一张各个产品线URL的访问记录表,该表仅仅有两个字段:product、url,我们需要统计各个产品线下访问次数前10的URL是哪些?解决方案(1)模拟访问记录数据模拟数据记录共有1000条,其中包括10个产品线:product1、product2、…、product10,100个URL... 阅读全文
-
SparkContext自定义扩展textFiles,支持从多个目录中输入文本文件
摘要:需求SparkContext自定义扩展textFiles,支持从多个目录中输入文本文件扩展class SparkContext(pyspark.SparkContext): def __init__(self, master=None, appName=None, sparkHome=Non... 阅读全文
-
Spark SQL Table Join(Python)
摘要:示例Spark SQL注册“临时表”执行“Join”(Inner Join、Left Outer Join、Right Outer Join、Full Outer Join)代码from pyspark import SparkConf, SparkContextfrom pyspark.sql i... 阅读全文
-
Spark RDD Union
摘要:示例Spark多个RDD(数据格式相同)“组合”为一个RDD代码from pyspark import SparkConf, SparkContext conf = SparkConf().setAppName("spark_app_union") sc = SparkContext(conf=co... 阅读全文
-
PySpark关于HDFS文件(目录)输入、数据格式的探讨
摘要:背景平台HDFS数据存储规则是按照“数据集/天目录/小时目录/若干文件”进行的,其中数据集是依据产品线或业务划分的。用户分析数据时,可能需要处理以下五个场景:(一)分析指定数据集、指定日期、指定小时、指定文件的数据;(二)分析指定数据集、指定日期、指定小时的数据;(三)分析指定数据集、指定日期的数据... 阅读全文
-
Spark SQL JSON数据处理
摘要:背景这一篇可以说是“HiveJSON数据处理的一点探索”的兄弟篇。平台为了加速即席查询的分析效率,在我们的Hadoop集群上安装部署了Spark Server,并且与我们的Hive数据仓库共享元数据。也就是说,我们的用户即可以通过HiveServer2使用Hive SQL执行MapReduce分析数... 阅读全文
-
Spark SQL编程指南(Python)
摘要:前言Spark SQL允许我们在Spark环境中使用SQL或者Hive SQL执行关系型查询。它的核心是一个特殊类型的Spark RDD:SchemaRDD。SchemaRDD类似于传统关系型数据库的一张表,由两部分组成:Rows:数据行对象Schema:数据行模式:列名、列数据类型、列可否为空等S... 阅读全文
-
Spark处理Json格式数据(Python)
摘要:前言Spark能够自动推断出Json数据集的“数据模式”(Schema),并将它加载为一个SchemaRDD实例。这种“自动”的行为是通过下述两种方法实现的:jsonFile:从一个文件目录中加载数据,这个目录中的文件的每一行均为一个JSON字符串(如果JSON字符串“跨行”,则可能导致解析错误);... 阅读全文