本来是很简单的一件事,代码也不复杂,如下:
代码:
public class LocationFromHiveDataSource {
@SuppressWarnings("deprecation")
public static void main(String[] args) {
// 首先还是创建SparkConf
SparkConf conf = new SparkConf()
.setAppName("LocationFromHiveDataSource");
// 创建JavaSparkContext
JavaSparkContext sc = new JavaSparkContext(conf);
// 创建HiveContext,注意,这里,它接收的是SparkContext作为参数,不是JavaSparkContext,其实也可以使用JavaSparkContext,只不过内部也是做了sc.sc()的操作
HiveContext hiveContext = new HiveContext(sc.sc());
DataFrame goodStudentsDF = hiveContext.sql("SELECT * FROM student");
goodStudentsDF.show();
sc.close();
}
}
打成jar包后,使用Spark-submit提交即可,提交脚本如下:
#!/bin/bash
/usr/local/spark/bin/spark-submit --jars /usr/local/spark/lib/MySQL-connector-Java-5.1.18-bin.jar --class com.telecom.location.Hive.LocationFromHiveDataSource --files /usr/local/hive/conf/hive-site.xml /usr/local/sparkshell/wingpay.jar
当然你得在hive中创建了表,里面最好有点数据,如果顺利,屏幕上会输出令你觉得很舒心的类似于使用mysql查看数据的结果,但是如果你的spark版本和Hadoop版本不一致的话
那你就哭吧,哭完了之后,重新下载一个跟hadoop一致的spark预编译版本或者自己编译一个。因为有些spark版本根本就没有将hive相关的东西打包进spark的编译包,这时就会报各种类找不到,方法找不到。
虽然例子很简单,但是换spark之前我把hive也换成了最新的了,然后还是按照之前一样启动,过程那叫一个曲折,新版本实用hive命令之前得使用schematool初始化metadata之类的,如:
[root@hadoop0 bin]# ./schematool -initSchema -dbType mysql
通过动手来跑这个程序,才发现以前那种看到了这个例子觉得很简单懒得去动手做的习惯真的是太蠢了,平时多流汗,战时少流血是有道理的,如果开始学的时候认认真真的跑一遍,实际上使用的时候就不会忙得手忙脚乱。
http://blog.csdn.net/kimyoungvon/article/details/51783382
相关推荐
Spark SQL的DataFrame接口支持多种数据源的操作。一个DataFrame可以进行RDDs方式的操作,也可以被注册为临时表。把DataFrame注册为临时表之后,就可以对该DataFrame执行SQL查询。 Spark SQL的默认数据源为Parquet...
1. **Hive数据源**: Hive是一个基于Hadoop的数据仓库工具,它允许用户使用SQL语法进行数据查询和分析。在本项目中,我们首先需要从Hive表中提取数据。Hive提供了丰富的接口供外部应用访问,包括Hive JDBC和Hive ...
本文将详细探讨在使用Spark SQL处理Hive表中的时间戳字段时,遇到的时间字段少8个小时的问题,并提供具体的解决方案。 #### 问题描述 在使用Spark SQL将Hive表中的`timestamp`类型字段插入到另一个表中时,发现最终...
Spark 支持通过 HiveContext(现在称为 HiveSession)连接到 Hive,这样可以使用 SQL 查询 Hive 表并将其结果转换为 Spark DataFrame。在读取 Hive 数据时,我们可以通过创建一个 HiveContext 对象,然后使用 `sql()...
6. 集成Hive:讲解如何使用Spark SQL与Hive仓库交互。 7. 分布式计算:介绍Spark的并行计算模型和内存管理机制。 8. 实战项目:通过具体案例展示Spark SQL在实际业务场景中的应用。 通过学习《Learning Spark SQL -...
spark sql操作hive表数据源,spark sql操作hive表数据源,spark sql操作hive表数据源,spark sql操作hive表数据源
4. **多数据源支持**:Spark SQL能够读取和写入多种数据存储系统,包括Hadoop的文件系统(HDFS)、列式存储Parquet、NoSQL数据库HBase以及Hive的数据仓库。 5. **分布式SQL引擎**:Spark SQL可以通过JDBC/ODBC接口...
6. **编译Spark**:在Spark的源代码目录下,同样使用Maven编译,但可能需要设置一些额外的参数来指定Hive的版本和位置。例如,`mvn clean package -Phadoop-3.2 -Pyarn -Pspark-3.0 -Phive -Phive-thriftserver -...
4. **数据源集成**:Spark SQL可以读取多种数据源,包括HDFS、Cassandra、Hive等。本章可能会讲解如何加载这些数据源中的数据到DataFrame,并进行查询和分析。 5. **SQL查询**:学习如何使用`sql()`函数执行SQL查询...
在Hive和ClickHouse之间传输数据时,Spark可以作为一个中间层,利用其强大的数据处理能力,将Hive表的数据转换为适合ClickHouse存储的格式。 导入ClickHouse的过程大致分为以下几步: 1. **配置Spark连接Hive**:...
Spark SQL可以连接多种数据源,如HDFS、Amazon S3、Cassandra等。通过`SparkSession.read.format()`方法加载数据,使用`DataFrameWriter.save()`方法保存数据。 5. **高级特性** - **窗口函数**:提供类似SQL的...
DataFrame是Spark SQL的核心概念,它提供了一种统一的方式来处理各种数据源,包括Hive,Parquet,JSON,CSV等。DataFrame类似于传统的表格数据库中的表,但具有分布式计算的能力。Dataset API是DataFrame的类型安全...
3. **数据源API**:在Spark 2.x版本中,引入了DataFrame和Dataset API,这些API提供了统一的数据源处理接口。Spark-Hive使得Hive表可以作为DataFrame或Dataset进行操作,进一步提升了开发者的编程体验。 4. **兼容...
Spark SQL通过Hive Metastore服务与Hive数据存储进行交互,支持HQL查询,并兼容Hive的表和UDF。这使得Spark SQL可以无缝地整合到现有的Hadoop生态系统中。 5. **数据源**: Spark SQL支持多种数据源,如Parquet、...
1. **源头上更换引擎**:最简单直接的方式是不在数据源端使用Tez引擎,而是选择使用Hive或Spark-SQL直接进行数据写入。这种方式避免了额外子目录的生成,从而消除了后续查询中的潜在问题。 2. **使用Tez引擎并进行二...
* 灵活:Spark SQL 可以处理各种数据源和数据格式。 * 可扩展:Spark SQL 可以与其他 Spark 组件集成,实现了数据处理和分析的一体化。 Spark SQL 是一个功能强大且高效的数据处理引擎,广泛应用于大数据处理、数据...
3. **Spark SQL操作多种数据源**:此部分探讨如何使用Spark SQL连接和处理来自不同来源的数据,如HDFS、Hive、Cassandra等,展示了其强大的数据处理能力。 4. **Parquet列式存储**:Parquet是一种高效的列式存储...
* Spark SQL 可以支持大量的数据源和数据分析算法,组合使用 Spark SQL 和 Spark MLlib,可以融合传统关系数据库的结构化数据管理能力和机器学习算法的数据处理能力。 五、RDD 转换为 DataFrame * RDD 转换为 ...
这是因为Hive on Spark模式下,Spark作为Hive的执行引擎,但为了避免版本冲突和依赖问题,需要独立编译Spark,不包含Hive的内置库。 首先,Hive on Spark的目的是利用Spark的分布式计算能力来加速HQL(Hive查询语言...