如何访问Hive表到火花

时间:2017-04-24 09:48:09

标签: apache-spark-sql spark-dataframe

我是Spark的新用户我正试图访问Hive表格Spark

1)创建了Spark上下文

val hc=new HiveContext(sc)

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

我的问题是我得到了Spark的表格。

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

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

SQL Query`和Dataframe Operations之间的操作有什么不同

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

1 个答案:

答案 0 :(得分:1)

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

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

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

    纯SQL查询可以更简洁,更容易理解。 还有便携式,可以使用所有支持的语言而无需任何修改。使用HiveContext这些也可用于公开某些功能,这些功能在其他方面是不可访问的(例如没有Spark包装器的UDF

    参考:Spark sql queries vs dataframe functions

    这是关于Spark RDDs与DataFrames与SparkSQL之间性能比较的良好阅读reference

  3. 显然我没有得到答案,并会继续通过网络进行研究并找出解决方案:)