随笔分类 - Python
-
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 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)“临时表”的数... 阅读全文
-
Python HiveServer2
摘要:1. 安装pyhs2pyhs2依赖项如下:gcc-c++python-devel.x86_64cyrus-sasl-devel.x86_64因此pyhs2的安装命令如下:yuminstallgcc-c++python-devel.x86_64cyrus-sasl-devel.x86_64pipins... 阅读全文
-
PySpark关于HDFS文件(目录)输入、数据格式的探讨
摘要:背景平台HDFS数据存储规则是按照“数据集/天目录/小时目录/若干文件”进行的,其中数据集是依据产品线或业务划分的。用户分析数据时,可能需要处理以下五个场景:(一)分析指定数据集、指定日期、指定小时、指定文件的数据;(二)分析指定数据集、指定日期、指定小时的数据;(三)分析指定数据集、指定日期的数据... 阅读全文
-
MySQL通用批量写入工具(Python)
摘要:背景平台目前的分析任务主要以Hive为主,分析后的结果存储在HDFS,用户通过REST API或者Rsync的方式获取分析结果,这样的方式带来以下几个问题:(1)任务执行结束时间未知,用户必须自行编写代码不断地通过REST API请求分析结果,直至获取到分析结果为止,其中还需要处理分析结果过大,转而... 阅读全文
-
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字符串“跨行”,则可能导致解析错误);... 阅读全文