2.SQLContext 和HiveContext的区别是什么? 3.SQLContext、HiveContext与SparkContext的区别是什么? SparkSQL 有SQLContext 和HiveContext.HiveContext 继承SQLContext.Hortonworks 和 Spark社区建议使用HiveContext.你可以看到下面 ,当你运行spark-shell,它和driver应用程序是交互的,他会自动创建SparkContext 定义为sc和HiveContext 定义为sqlContext.HiveContext 允许执行 你可以看下 Spark 1.3.1 文档,SQLContext 和HiveContext 在SQLContext documentation and HiveContext documentation(
操作Hive中的数据时,必须创建HiveContext,而不是SQLContext。 将hive-site.xml拷贝到spark/conf目录下,将mysql connector拷贝到spark/lib目录下 HiveContext sqlContext = new HiveContext ,注意,这里,它接收的是SparkContext作为参数,不是JavaSparkContext HiveContext hiveContext = new HiveContext(sc.sc()); // 第一个功能,使用HiveContext的sql()方法,可以执行Hive中能够执行的HiveQL语句 // 判断是否存在student_infos表,如果存在则删除 hiveContext.sql = new HiveContext(sc); hiveContext.sql("DROP TABLE IF EXISTS student_infos"); hiveContext.sql("CREATE
val hc = new HiveContext(sc) hc.sql("show databases").show hc.sql("user default").show hc.sql("select 是SQLContext的子类,连接Hive建议使用HiveContext。 HiveContext hiveContext = new HiveContext(sc); hiveContext.sql("USE spark"); hiveContext.sql("DROP TABLE (name STRING,age INT) row format delimited fields terminated by '\t' "); hiveContext.sql("load data */ val hiveContext = new HiveContext(sc) hiveContext.sql("use spark") hiveContext.sql("drop table
经过查资料,才发现由于自己的dataframe是用SQLContext创建的,而用HiveContext是无法访问的。 这就涉及到registerTempTable生命周期的问题,以前都没细看,其生命周期只在所定义的sqlContext或hiveContext实例之中。 换而言之,在一个sqlontext(或hiveContext)中registerTempTable的表不能在另一个sqlContext(或hiveContext)中使用。 因此,HiveContext来创建DataFrame就没有问题。成功解决。
使用HiveContext,我们构建SchemaRDDs.这代表我们机构化数据,和操作他们使用sql或则正常的rdd操作如map(). import org.apache.spark.sql.SQLContext Scala用户注意,我们不使用 import HiveContext. 相反,一旦我们有了结构化HiveContext实例化,我们可以导入 implicits 在例子2中。导入Java和Python在例子3和4中。 hiveCtx = HiveContext(sc) 现在我们有了HiveContext 或则SQLContext,我们准备加载数据和查询。 基本查询例子 为了对一个表查询,我们调用HiveContext或则SQLContext的sql()函数.第一个事情,我们需要告诉spark sql关于一些数据的查询。
三、开窗函数 row_number() 开窗函数是按照某个字段分组,然后取另一字段的前几个的值,相当于 分组取topN 如果SQL语句里面使用到了开窗函数,那么这个SQL语句必须使用HiveContext 来执行,HiveContext默认情况下在本地无法创建。 来执行,HiveContext默认情况下在本地无法创建 * @author root * */ public class RowNumberWindowFun { public static hiveContext = new HiveContext(sc); hiveContext.sql("use spark"); hiveContext.sql("drop = new HiveContext(sc) hiveContext.sql("use spark"); hiveContext.sql("drop table if exists sales");
向hive数据仓库写入数据必须指定数据库,hive数据表建立可以在hive上建立,或者使用hiveContext.sql("create table .....") = new org.apache.spark.sql.hive.HiveContext(sc) import hiveContext.implicits._ hiveContext.sql("use 2、将DataFrame数据写入hive指定数据表的分区中 hive数据表建立可以在hive上建立,或者使用hiveContext.sql("create table....") ,使用saveAsTable时数据存储格式有限,默认格式为parquet,将数据写入分区的思路是:首先将DataFrame数据写入临时表,之后由hiveContext.sql语句将数据写入hive分区表中 = new org.apache.spark.sql.hive.HiveContext(sc) import hiveContext.implicits._ hiveContext.sql("use
implements Serializable { private transient JavaSparkContext javaSparkContext; private transient HiveContext hiveContext; /* * 初始化Load * 创建sparkContext, sqlContext, hiveContext * */ public "yarn-client"); javaSparkContext = new JavaSparkContext(sparkConf); } /* * 创建hiveContext * 用于读取Hive中的数据 * */ private void initHiveContext() { hiveContext = new HiveContext * */ String query1 = "select * from gulfstream_test.orders"; DataFrame rows1 = hiveContext.sql
import org.apache.spark.sql.DataFrame; import org.apache.spark.sql.Row; import org.apache.spark.sql.hive.HiveContext ).setAppName("SparkInsertHbase"); JavaSparkContext sc = new JavaSparkContext(conf); HiveContext hiveContext = new HiveContext(sc.sc()); DataFrame df = hiveContext.sql("select id,name from
一、SQLContext、HiveContext、SparkSession SQLContext:是spark sql的一个分支入口,可以用来操作sql,这个主要是针对spark来说 HiveContext \ /root/lib/sqlspark-1.0.jar \ /root/app/spark-2.3.0/examples/src/main/resources/people.json 三、HiveContext spark-hive_2.11</artifactId> <version>${spark.version}</version> </dependency> 2、建一个Scala应用程序 /** * hiveContext sqlConf.setAppName("SQLContextApp").setMaster("local[2]") val sc = new SparkContext(sqlConf) val hiveContext = new HiveContext(sc) //2)相关处理:json hiveContext.table("emp").show() //3)关闭资源 sc.stop(
SparkSQL有两个分支,sqlContext和hiveContext。 sqlContext现在只支持SQL语法解析器(Catalyst),hiveContext支持SQL语法和HiveContext语法解析器。 然而并没有什么卵用,catalyst解析做的有些简陋,很多不支持,所以在写程序的时候,还是声明的hiveContext对象。 hiveContext的解析过程: (1)SQL语句经过HiveQl.parseSql解析成了Unresolved LogicalPlan。
{SparkConf, SparkContext} import org.apache.spark.sql.SparkSession import org.apache.spark.sql.hive.HiveContext SparkConf( ).setAppName( "TestSpark Pipeline" ) val sparkContext = new SparkContext( conf ) val hiveContext = new HiveContext(sparkContext) val sqlContext = new SQLContext(sparkContext) val spark = SparkSession.builder val sqlQuery = Source.fromFile( dataSqlFile ).mkString val dataSqlFrame = SparkConfTrait.hiveContext.sql
SQLContext 要使用Spark SQL,首先就得创建一个创建一个SQLContext对象,或者是它的子类的对象,比如HiveContext的对象。 ——HiveContext。 HiveContext的功能除了包含SQLContext提供的所有功能之外,还包括了额外的专门针对Hive的一些功能。 要使用HiveContext,就必须预先安装好Hive,SQLContext支持的数据源,HiveContext也同样支持——而不只是支持Hive。 对于HiveContext,它默认的方言是“hiveql”
getHiveContext() throws SparkInitException { return new HiveContext(javaSparkContext); } class FiremanDriver implements Serializable { private String db; private String table; private HiveContext hiveContext;public FiremanDriver(String db, String table) { try { this.db = db; this.table = table; SparkClient sparkClient = new SparkClient(); hiveContext %s", db ,table); System.out.println(query); DataFrame rows = hiveContext.sql(
DataFrame HiveContext是SQLContext的超集,一般需要实例化它,也就是 from pyspark.sql import HiveContext sqlContext = HiveContext teenNames.collect(): print(teenName) # hive的操作 # sc is an existing SparkContext. from pyspark.sql import HiveContext sqlContext = HiveContext(sc) sqlContext.sql("CREATE TABLE IF NOT EXISTS src (key INT, value STRING)
public SQLContext getSQLContext() { return new SQLContext(javaSparkContext); } public HiveContext getHiveContext() { return new HiveContext(javaSparkContext); } private void initSparkConf import org.apache.spark.sql.DataFrame; import org.apache.spark.sql.Row; import org.apache.spark.sql.hive.HiveContext hiveContext; private String db; private String tb; private String pt; private String %s where %s", db ,tb, partition); System.out.println(query); DataFrame rows = hiveContext.sql
、JDBC等等,而HiveContext除了支持SQLContext的数据源外,还支持Hive的数据源。 而HiveContext可以在内存中创建表和视图,并将其存储在Hive Metastore中。 SQL语言支持:SQLContext和HiveContext都支持Spark SQL中的基本语法,例如SELECT、FROM、WHERE等等。 但HiveContext还支持Hive中的所有SQL语法,例如INSERT、CREATE TABLE AS等等。 如若访问Hive中数据或在内存中创建表和视图,推荐HiveContext;若只需访问常见数据源,使用SQLContext。
from pyspark.sql import HiveContext hivec = HiveContext(sc) # 创建一个hivecontext对象用于写执行SQL,sc为sparkcontext
在应用使用Spark 5.1 初始化Spark //Sacla中SQL的import的声明 import org.apache.spark.sql.hive.HiveContext //创建HiveContext import hiveCtx. val hiveCtx = new HiveContext(sc) 5.2 基本的查询示例 val input = hiveCtx.jsonFile(inputFile)
org.apache.spark.sql.SQLContext; import org.apache.spark.sql.SaveMode; import org.apache.spark.sql.hive.HiveContext hiveContext; private SQLContext sqlContext; /* * 初始化Load * 创建sparkContext, sqlContext , hiveContext * */ public LoadDB() { initSparckContext(); initSQLContext(); "yarn-client"); javaSparkContext = new JavaSparkContext(sparkConf); } /* * 创建hiveContext * 用于读取Hive中的数据 * */ private void initHiveContext() { hiveContext = new HiveContext