use*_*150 2 odbc apache-spark apache-spark-sql
我有一个火花簇设置,并在我的数据集上尝试了本机scala和spark sql,并且设置似乎在大多数情况下都有效.我有以下问题
从ODBC/extenal连接到群集,我应该期待什么? - 管理员/开发人员对数据进行整形并持久保存/缓存一些将要公开的RDD?(关于蜂巢表的思路) - 什么相当于连接到spark/spark sql中的"Hive Metastore"?
正在思考蜂巢的故障吗?
我的另一个问题是 - 当我发出hive查询(并说创建表等)时,它使用与hadoop/hive相同的hive Metastore - 当我使用sqlcontext发出sql查询时,表在哪里创建? - 如果我坚持使用表,它与持久化RDD的概念相同吗?
感谢您的回答
Nithya
(这是用spark 1.1编写的,请注意新功能往往会快速添加,下面提到的一些限制可能会在将来的某个时候消失).
您可以将Spark SQL与Hive语法一起使用并连接到Hive Metastore,这将导致您的Spark SQL配置单元命令在同一数据空间上执行,就像它们直接通过Hive执行一样.
要做到这一点,您只需要按照此处的说明实例化HiveContext,并提供一个hive-site.xml配置文件,该文件除其他外,指定在何处查找Hive Metastore.
SELECT语句的结果是SchemaRDD,它是具有关联模式的Row对象的RDD.您可以像使用任何RDD一样使用它,包括缓存和持久性,效果是相同的(数据来自蜂巢的事实在这里没有影响).
如果您的hive命令正在创建数据,例如"CREATE TABLE ...",则相应的表在与常规Hive完全相同的位置创建,即默认情况下为/ var/lib/hive/warehouse.
通过Spark执行Hive SQL为您提供了Spark的所有缓存优势:在同一个spark上下文中对同一数据集执行第二个SQL查询通常比第一个查询快得多.
从Spark 1.1开始,可以启动Thrift JDBC服务器,它本质上与HiveServer2等效,因此允许您通过JDBC连接执行SparkQL命令.
请注意,并非所有Hive功能都可用(但是?),请参阅此处的详细信息.
最后,您还可以丢弃Hive语法和Metastore,并直接在CSV和Parquet文件上执行SQL查询.我最好的猜测是,这将成为未来的首选方法,尽管此时可用的SQL功能集比使用Hive语法时要小.
归档时间: |
|
查看次数: |
1944 次 |
最近记录: |