spark-sql做ETL时遇到的两个问题】的更多相关文章

项目中使用spark-sql来作ETL,遇到两个问题,记录一下. 问题1: spark-sql –master yarn –hiveconf load_date=`date –d ..`  -e 'insert overwrite table tbl(.) select distinct * from tbl" 在hdfs上这个表所在的目录下面会产生很多的类似.hive-staging-yyyy-MM-dd-的文件 问题2: spark-sql生成的目录特别多,尤其是我使用spark-strea…
spark sql执行insert overwrite table时,写到新表或者新分区的文件个数,有可能是200个,也有可能是任意个,为什么会有这种差别? 首先看一下spark sql执行insert overwrite table流程: 1 创建临时目录,比如 .hive-staging_hive_2018-06-23_00-39-39_825_3122897139441535352-2312/-ext-10000 2 将数据写到临时目录: 3 执行loadTable或loadPartiti…
spark sql执行insert overwrite table时,写到新表或者新分区的文件个数,有可能是200个,也有可能是任意个,为什么会有这种差别? 首先看一下spark sql执行insert overwrite table流程: 1 创建临时目录,比如2 将数据写到临时目录: .hive-staging_hive_2018-06-23_00-39-39_825_3122897139441535352-2312/-ext-10000 2 执行loadTable或loadPartitio…
Spark版本:1.6.2 概览 Spark SQL用于处理结构化数据,与Spark RDD API不同,它提供更多关于数据结构信息和计算任务运行信息的接口,Spark SQL内部使用这些额外的信息完成特殊优化.可以通过SQL.DataFrames API.Datasets API与Spark SQL进行交互,无论使用何种方式,SparkSQL使用统一的执行引擎记性处理.用户可以根据自己喜好,在不同API中选择合适的进行处理.本章中所有用例均可以在spark-shell.pyspark shel…
Spark SQL 官方文档-中文翻译 Spark版本:Spark 1.5.2 转载请注明出处:http://www.cnblogs.com/BYRans/ 1 概述(Overview) 2 DataFrames 2.1 入口:SQLContext(Starting Point: SQLContext) 2.2 创建DataFrames(Creating DataFrames) 2.3 DataFrame操作(DataFrame Operations) 2.4 运行SQL查询程序(Running…
前言   Spark SQL允许我们在Spark环境中使用SQL或者Hive SQL执行关系型查询.它的核心是一个特殊类型的Spark RDD:SchemaRDD.   SchemaRDD类似于传统关系型数据库的一张表,由两部分组成:   Rows:数据行对象 Schema:数据行模式:列名.列数据类型.列可否为空等   Schema可以通过四种方式被创建:   (1)Existing RDD (2)Parquet File (3)JSON Dataset (4)By running Hive…
Spark SQL, DataFrames and Datasets Guide Overview SQL Datasets and DataFrames 开始入门 起始点: SparkSession 创建 DataFrames 无类型的Dataset操作 (aka DataFrame 操作) Running SQL Queries Programmatically 全局临时视图 创建Datasets RDD的互操作性 使用反射推断Schema 以编程的方式指定Schema Aggregatio…
转自:http://www.cnblogs.com/yurunmiao/p/4685310.html 前言   Spark SQL允许我们在Spark环境中使用SQL或者Hive SQL执行关系型查询.它的核心是一个特殊类型的Spark RDD:SchemaRDD.   SchemaRDD类似于传统关系型数据库的一张表,由两部分组成:   Rows:数据行对象 Schema:数据行模式:列名.列数据类型.列可否为空等   Schema可以通过四种方式被创建:   (1)Existing RDD…
之前已经对spark core做了较为深入的解读,在如今SQL大行其道的背景下,spark中的SQL不仅在离线batch处理中使用广泛,structured streamming的实现也严重依赖spark SQL.因此,接下来,会对spark SQL做一个较为深入的了解. 本文首先介绍一下spark sql的整体流程,然后对这个流程之中涉及到的第一个步骤:SQL语法解析部分做一下较为深入的分析. 1,spark sql概述 首先截取一张任何介绍spark sql实现都会出现的图(如下). 总体执…
Spark SQL, DataFrames and Datasets Guide Overview SQL Datasets and DataFrames 开始入门 起始点: SparkSession 创建 DataFrames 无类型的Dataset操作 (aka DataFrame 操作) Running SQL Queries Programmatically 全局临时视图 创建Datasets RDD的互操作性 使用反射推断Schema 以编程的方式指定Schema Aggregatio…
spark SQL Parquet 文件的读取与加载 是由许多其他数据处理系统支持的柱状格式.Spark SQL支持阅读和编写自动保留原始数据模式的Parquet文件.在编写Parquet文件时,出于兼容性原因,所有列都会自动转换为空. 1, 以编程方式加载数据 这里使用上一节的例子中的数据:常规数据加载   private def runBasicParquetExample(spark: SparkSession): Unit = {      import spark.implicits.…
#Spark SQL 之 Data Sources 转载请注明出处:http://www.cnblogs.com/BYRans/ 数据源(Data Source) Spark SQL的DataFrame接口支持多种数据源的操作.一个DataFrame可以进行RDDs方式的操作,也可以被注册为临时表.把DataFrame注册为临时表之后,就可以对该DataFrame执行SQL查询.Data Sources这部分首先描述了对Spark的数据源执行加载和保存的常用方法,然后对内置数据源进行深入介绍.…
1. Spark SQL概述 1.1 什么是Spark SQL Spark SQL是Spark用来处理结构化数据的一个模块,它提供了两个编程抽象分别叫做DataFrame和DataSet,它们用于作为分布式SQL查询引擎.从下图可以查看RDD.DataFrames与DataSet的关系. 1.2 为什么要学习Spark SQL Hive,它是将Hive SQL转换成MapReduce,然后提交到集群上执行的,大大简化了编写MapReduce程序的复杂性,而且MapReduce这种计算模型执行效率…
最近一直在银行做历史数据平台的项目,目前整个项目处于收尾的阶段,也好有时间整理下在项目中的一些收获. 该历史数据平台使用spark+Nosql架构了,Nosql提供了海量数据的实时查询,而spark提供了sql支持,最开始给客户设计方案的时候,对spark sql也不是很熟悉,只知道它的thriftserver可以支持JDBC,在做方案的设计的使用,Spark SQL提供了对外查询的接口.在测试中发现,spark sql的sql是一个执行完成后才能执行另一个,就是换了fair这种作业调度方式,整…
Spark SQL - 对大规模的结构化数据进行批处理和流式处理 大体翻译自:https://jaceklaskowski.gitbooks.io/mastering-apache-spark/content/spark-sql.html 如同一般的 Spark 处理,Spark SQL 本质上也是大规模的基于内存的分布式计算. Spark SQL 和 RDD 计算模型最大的区别在于数据处理的框架不同.Spark SQL 可以通过多种不同的方式对结构化的数据和半结构化的数据进行处理.它既可以使用…
最近在客户中使用spark sql 做一些表报处理,但是在做数据关联时,老是遇到 “correlated scalar subqueries must be aggregated” 错误 举一个例子,这个sql 在oracle 或者 postgresql 都是可以正常运行的,但是在spark sql 就会报错“correlated scalar subqueries must be aggregated” SELECT A.dep_id, A.employee_id, A.age, (SELEC…
在生产中,无论是通过SQL语句或者Scala/Java等代码的方式使用Spark SQL处理数据,在Spark SQL写数据时,往往会遇到生成的小文件过多的问题,而管理这些大量的小文件,是一件非常头疼的事情. 大量的小文件会影响Hadoop集群管理或者Spark在处理数据时的稳定性: 1. Spark SQL写Hive或者直接写入HDFS,过多的小文件会对NameNode内存管理等产生巨大的压力,会影响整个集群的稳定运行 2. 容易导致task数过多,如果超过参数spark.driver.max…
Spark SQL 支持多种数据类型,并兼容Python.Scala等语言的数据类型. 一,Spark SQL支持的数据类型 整数系列: BYTE, TINYINT:表示1B的有符号整数 SHORT, SMALLINT:表示2B的有符号整数 INT, INTEGER:表示4B的有符号整数 LONG, BIGINT:表示8B的有符号整数 小数系列: FLOAT, REAL:表示4B的单精度浮点数 DOUBLE:表示8B的双精度浮点数 DECIMAL, DEC, NUMERIC:表示任意精度的带符号…
前言 Catalyst是Spark SQL核心优化器,早期主要基于规则的优化器RBO,后期又引入基于代价进行优化的CBO.但是在这些版本中,Spark SQL执行计划一旦确定就不会改变.由于缺乏或者不准确的数据统计信息(如行数.不同值的数量.NULL值.最大/最小值等)和对成本的错误估算导致生成的初始计划不理想,从而导致执行效率相对低下. 那么就引来一个思考:我们如何能够在运行时获取更多的执行信息,然后根据这些信息来动态调整并选择一个更优的执行计划呢? Spark SQL自适应执行优化引擎(Ad…
行列之间的互相转换是ETL中的常见需求,在Spark SQL中,行转列有内建的PIVOT函数可用,没什么特别之处.而列转行要稍微麻烦点.本文整理了2种可行的列转行方法,供参考. 本文链接:https://www.cnblogs.com/hhelibeb/p/10310369.html 测试数据准备 本文的环境是Windows 10, Spark 2.4,开发语言是Python.首先构建一点初始测试数据, from pyspark.sql import SparkSession spark = S…
order_created.txt   订单编号  订单创建时间 -- :: -- :: -- :: -- :: -- :: order_picked.txt   订单编号  订单提取时间 -- :: -- :: -- :: 上传上述两个文件到HDFS: hadoop fs -put order_created.txt /data/order_created.txt hadoop fs -put order_picked.txt /data/order_picked.txt 通过Spark SQ…
Spark SQL读取数据Oracle的数据时,发现number类型的字段在读取的时候精度丢失了,使用的spark版本是Spark2.1.0的版本,竟然最后经过排查和网上查资料发现是一个bug.在Spark2.1.2以上的版本解决了这个问题. number类型的数据通过spark sql的jdbc读取的时候回变成DecimalType的类型.同时精度不会丢失,在2.1.2版本之前读取过来是IntType类型的. Spark issues列表: 通过JDBC读取Oracle数据打印的DataFra…
不多说,直接上干货! 最近,开始,进一步学习spark的最新版本.由原来经常使用的spark-1.6.1,现在来使用spark-2.2.0-bin-hadoop2.6.tgz. 前期博客 Spark on YARN模式的安装(spark-1.6.1-bin-hadoop2.6.tgz + hadoop-2.6.0.tar.gz)(master.slave1和slave2)(博主推荐) 这里我,使用的是spark-2.2.0-bin-hadoop2.6.tgz + hadoop-2.6.0.tar…
Apache Kyuubi(Incubating)(下文简称Kyuubi)是⼀个构建在Spark SQL之上的企业级JDBC网关,兼容HiveServer2通信协议,提供高可用.多租户能力.Kyuubi 具有可扩展的架构设计,社区正在努力使其能够支持更多通信协议(如 RESTful. MySQL)和计算引擎(如Flink). Kyuubi的愿景是让大数据平民化.一个的典型使用场景是替换HiveServer2,帮助企业把HiveQL迁移到Spark SQL,轻松获得10~100倍性能提升(具体提升…
周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark SQL相关的知识,如果对Spark不熟的同学可以先看看之前总结的两篇文章: [原]Learning Spark (Python版) 学习笔记(一)----RDD 基本概念与命令 [原]Learning Spark (Python版) 学习笔记(二)----键值对.数据读取与保存.共享特性 #####…
好久没更新博客了,之前学了一些R语言和机器学习的内容,做了一些笔记,之后也会放到博客上面来给大家共享.一个月前就打算更新Spark Sql的内容了,因为一些别的事情耽误了,今天就简单写点,Spark1.2马上就要出来了,不知道变动会不会很大,据说添加了很多的新功能呢,期待中... 首先声明一下这个版本的代码是1.1的,之前讲的都是1.0的. Spark支持两种模式,一种是在spark里面直接写sql,可以通过sql来查询对象,类似.net的LINQ一样,另外一种支持hive的HQL.不管是哪种方…
自2013年3月面世以来,Spark SQL已经成为除Spark Core以外最大的Spark组件.除了接过Shark的接力棒,继续为Spark用户提供高性能的SQL on Hadoop解决方案之外,它还为Spark带来了通用.高效.多元一体的结构化数据处理能力.在刚刚发布的1.3.0版中,Spark SQL的两大升级被诠释得淋漓尽致. DataFrame 就易用性而言,对比传统的MapReduce API,说Spark的RDD API有了数量级的飞跃并不为过.然而,对于没有MapReduce和…
http://www.aboutyun.com/forum.php?mod=viewthread&tid=12358&page=1 1.DataFrame是什么?2.如何创建DataFrame?3.如何将普通RDD转变为DataFrame?4.如何使用DataFrame?5.在1.3.0中,提供了哪些完整的数据写入支持API? 自2013年3月面世以来,Spark SQL已经成为除Spark Core以外最大的Spark组件.除了接过Shark的接力棒,继续为Spark用户提供高性能的SQ…
/** Spark SQL源代码分析系列文章*/ 自从去年Spark Submit 2013 Michael Armbrust分享了他的Catalyst,到至今1年多了,Spark SQL的贡献者从几人到了几十人,并且发展速度异常迅猛,究其原因,个人觉得有下面2点: 1.整合:将SQL类型的查询语言整合到 Spark 的核心RDD概念里.这样能够应用于多种任务,流处理,批处理,包含机器学习里都能够引入Sql.     2.效率:由于Shark受到hive的编程模型限制,无法再继续优化来适应Spa…
介绍Spark SQL的JSON支持,这是我们在Databricks中开发的一个功能,可以在Spark中更容易查询和创建JSON数据.随着网络和移动应用程序的普及,JSON已经成为Web服务API以及长期存储的常用的交换格式.使用现有的工具,用户通常会使用复杂的管道来在分析系统中读取和写入JSON数据集.在Apache Spark 1.1中发布Spark SQL的JSON支持,在Apache Spark 1.2中增强,极大地简化了使用JSON数据的端到端体验. 现有做法 实际上,用户经常面临使用…