背景
 
这一篇可以说是“Hive JSON数据处理的一点探索”的兄弟篇。
 
平台为了加速即席查询的分析效率,在我们的Hadoop集群上安装部署了Spark Server,并且与我们的Hive数据仓库共享元数据。也就是说,我们的用户即可以通过HiveServer2使用Hive SQL执行MapReduce分析数据,也可以使用SparkServer使用Spark SQL(Hive SQL)执行Spark Application分析数据。
 
两者除去MapReduce和Spark Application计算模式的不同之外,Spark Server的优势在于它的Container进程是常驻的,也就是说它的计算资源是预留的,接收到SQL语句之后可以立即执行,响应速度更加迅速。
 
既然Spark Server和HiveServer2共享元数据,我们应该能够在SQL层面最大限度地屏蔽两者之间的差异。虽然Spark官方声称兼容大多数Hive SQL语句,但实际使用当中却经常出现各种异常。
 
本文所要讨论的就是Spark SQL使用Hive内建函数json_tuple的异常问题。
 
我们还是借用“Hive JSON数据处理的一点探索”中的示例数据表来说明问题。
 
(1)通过HiveServer2来执行Hive SQL语句;
 
 
(2)通过Spark Server来执行Hive SQL语句;
 
 
终端异常信息为:Error: java.lang.ClassNotFoundException: json_tuple (state=,code=0)
 
Spark Server日志输出为:
 
 
 
怀疑的问题为找不到相应的jar包,其实实际问题是UDF解析类名错误,json_tuple为函数名称,其对应的类名应为org.apache.hadoop.hive.ql.udf.generic.GenericUDTFJSONTuple。
 
这个异常直接影响到我们使用Hive UDF json_tuple通过Spark Server分析JSON数据。
 
方案
 
为了达到“Hive JSON数据处理的一点探索”中数据表myjson最后的查询效果,我们需要使用Hive UDF get_json_object来实现,如下:
 
 
由get_tuple和func.json_array结合使用的方案变为get_json_object和func.json_array结合使用的方案。可以看出这种方案虽然繁杂,但可以应对实际问题。
 
 

Spark SQL JSON数据处理的更多相关文章

  1. Spark sql ---JSON

    介绍Spark SQL的JSON支持,这是我们在Databricks中开发的一个功能,可以在Spark中更容易查询和创建JSON数据.随着网络和移动应用程序的普及,JSON已经成为Web服务API以及 ...

  2. Spark SQL大数据处理并写入Elasticsearch

    SparkSQL(Spark用于处理结构化数据的模块) 通过SparkSQL导入的数据可以来自MySQL数据库.Json数据.Csv数据等,通过load这些数据可以对其做一系列计算 下面通过程序代码来 ...

  3. Spark之json数据处理

    -- 默认情况下,SparkContext对象在spark-shell启动时用namesc初始化.使用以下命令创建SQLContext. val sqlcontext = new org.apache ...

  4. 【转载】Spark SQL之External DataSource外部数据源

    http://blog.csdn.net/oopsoom/article/details/42061077 一.Spark SQL External DataSource简介 随着Spark1.2的发 ...

  5. Spark SQL External DataSource简介

    随着Spark1.2的发布,Spark SQL开始正式支持外部数据源.这使得Spark SQL支持了更多的类型数据源,如json, parquet, avro, csv格式.只要我们愿意,我们可以开发 ...

  6. 第十一篇:Spark SQL 源码分析之 External DataSource外部数据源

    上周Spark1.2刚发布,周末在家没事,把这个特性给了解一下,顺便分析下源码,看一看这个特性是如何设计及实现的. /** Spark SQL源码分析系列文章*/ (Ps: External Data ...

  7. spark sql 导出数据

    如果用户希望在spark sql 中,执行某个sql 后,将其结果集保存到本地,并且指定csv 或者 json 格式,在 beeline 中,实现起来很麻烦.通常的做法是将其create table ...

  8. Spark SQL之External DataSource外部数据源(二)源代码分析

    上周Spark1.2刚公布,周末在家没事,把这个特性给了解一下,顺便分析下源代码,看一看这个特性是怎样设计及实现的. /** Spark SQL源代码分析系列文章*/ (Ps: External Da ...

  9. spark结构化数据处理:Spark SQL、DataFrame和Dataset

    本文讲解Spark的结构化数据处理,主要包括:Spark SQL.DataFrame.Dataset以及Spark SQL服务等相关内容.本文主要讲解Spark 1.6.x的结构化数据处理相关东东,但 ...

随机推荐

  1. HTML_常见命令学习笔记

    1. java类中的这段代码 out.println(" <div class='line'>"); out.println(" <div align= ...

  2. IOS_视图实现圆角效果的三种方法及比较

    通过代码,至少有三种方法可以为视图加上圆角效果.附例子:https://github.com/weipin/RoundedCorner 方法一.layer.cornerRadius 第一种方法最简单, ...

  3. js 实现图片旋转角度

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. poj2104:K-th Number

    思路:可持久化线段树,利用权值线段树,把建树过程看成插入,插入第i个元素就在第i-1棵树的基础上新建结点然后得到第i棵树,那么询问区间[l,r]就是第r棵树上的信息对应减去第l-1棵树上的信息,然后再 ...

  5. Traveller数据访问路径

    2015年10月数据访问路径

  6. css按钮自适应

    原理:利用a标签和i标签各自一个背景组合成为按钮,达到自适应. <!DOCTYPE html> <html> <head> <meta charset=&qu ...

  7. c#指针用法示例。

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...

  8. 安装mod_deflate模块启用apache的GZIP压缩

    安装mod_deflate模块启用apache的GZIP压缩 操作系统:Linux Cent OS 5 / Max OS X 10.6 snow leopard相关环境:Apache httpd 2. ...

  9. zzuli oj 1165 实数的小数部分(指针专题)

    Description 读入一个实数,输出该实数的小数部分,小数部分若多余的末尾0,请去掉.如输入111111.12345678912345678900  则输出0.12345678912345678 ...

  10. POJ 1716 Integer Intervals 差分约束

    题目:http://poj.org/problem?id=1716 #include <stdio.h> #include <string.h> #include <ve ...