2017-04-24 74 views
1

我是新来Spark我试图访问HiveSpark如何访问蜂巢表火花

1)创建星火语境

val hc=new HiveContext(sc) 

val hivetable= hc.sql("Select * from test_db.Table") 

我的问题是,我得到了表到星火。

1)为什么我们需要注册表?

2)我们可以直接执行SQL operations仍然为什么我们需要Dataframe功能 像Join, Select, Filter ...等?

是什么让SQL Query`和数据帧Operations之间的两种操作差异

3)什么是星火优化?它是如何工作的?

回答

1
  1. 如果您使用Spark HiveContext访问Hive表,则不需要注册临时表。将DataFrame注册为临时表允许您对其数据运行SQL查询。假设您正在从某个位置的某个文件访问数据,并且希望对此数据运行SQL查询。 然后您需要从Row RDD中获得createDataframe,并且您将在此DataFrame上注册临时表以运行SQL操作。要对该数据执行SQL查询,您需要在代码中使用Spark SQLContext

  2. 这两种方法都使用完全相同的执行引擎和内部数据结构。一天结束时,所有事情都归结为开发人员的个人喜好。

    可以说DataFrame查询更容易以编程方式构建,并且 提供了最小的类型安全性。

    普通的SQL查询可以更加简明易懂。 也有便携式,可用于每种支持的语言没有任何修改。随着HiveContext这些也可以用来揭露一些功能,可以在其他方面无法访问(例如UDF不星火包装

    参考:Spark sql queries vs dataframe functions

    这里是一个很好的星火RDDS之间的性能比较VS DataFrames阅读reference VS SparkSQL

  3. 显然我没有为它的答案,将其保留在你做了一些网研究,并找出解决办法:)