2014-10-03 113 views
2

我有一个火花集群设置,并尝试在我的数据集上的本地scala和火花sql,并且安装似乎大部分工作。我有以下问题Spark新手(ODBC/SparkSQL)

从ODBC/extenal连接到集群,我应该期待什么? - 管理员/开发人员对数据进行整形并保留/缓存将暴露的几个RDD? (关于蜂巢表的思路) - 在spark/spark sql中连接到“Hive metastore”会有什么相似之处?

是否正在考虑蜂巢的故障?

我的另一个问题是 - 当我发出蜂巢查询,(说创建表和这样的),它使用相同的蜂巢metastore作为Hadoop的/蜂房 - 在哪里,当我发出使用sqlcontext SQL查询表获得创建? - 如果我坚持这个表,这与持续RDD的概念是一样的吗?

欣赏你的答案

Nithya

回答

5

(这是写在心中的火花1.1,要知道,新的功能往往被迅速补充,下文提到的一些限制可能会在某些时候很好消失未来)。

您可以使用带有Hive语法的Spark SQL并连接到Hive Metastore,这将导致您的Spark SQL配置单元命令在相同的数据空间上执行,就像它们直接通过Hive执行一样。

要做到这一点,您只需要像解释here那样实例化HiveContext,并提供一个hive-site.xml配置文件,该文件指定了何处可以找到Hive Metastore的位置。

SELECT语句的结果是SchemaRDD,它是具有关联模式的Row对象的RDD。您可以像使用任何RDD一样使用它,包括缓存和持久性,效果也是一样的(数据来自配置单元的事实在此没有影响)。

如果您的配置单元命令正在创建数据,例如“CREATE TABLE ...”,相应的表的创建方式与默认情况下常规Hive完全相同,即/ var/lib/hive/warehouse。

通过Spark执行Hive SQL为您提供了Spark的所有缓存优势:在同一个Spark上下文中对同一数据集执行第二个SQL查询通常比第一个查询快得多。

自Spark 1.1以来,有可能使用start the Thrift JDBC server,它本质上等同于HiveServer2,因此允许您通过JDBC连接执行SparkQL命令。

请注意,并非所有Hive功能都可用(尚未?),请参阅详细信息here

最后,您还可以放弃Hive语法和Metastore,并直接在CSV和Parquet文件上执行SQL查询。我最好的猜测是,这将成为未来的首选方法,但目前像这样的SQL功能集比使用Hive语法时要小。