HIVE有一个元存储,HIVESERVER 2监听SQL请求;在元存储的帮助下,查询被执行,结果被传回。Thrift框架实际上被定制为HIVESERVER 2。这样,HIVE就充当了服务。通过编程语言,我们可以将HIVE用作数据库。
Spark-SQL和HIVE之间的关系是:
Spark-SQL只使用HIVE设置(HDFS文件系统、HIVE元存储、Hiveserver 2)。start-thriftserver2.sh(在spark安装中提供),我们应该给予hiveserver 2端口号和主机名。然后通过spark的直线,我们可以在HIVE中实际创建、删除和操作表。API可以是Spark-SQL或HIVE QL。如果我们创建表/删除表,如果我们登录到HIVE并进行检查(比如说通过HIVEbeeline或HIVECLI),它将是清晰可见的。
我的理解是Spark没有像HIVE那样的 meta存储设置,Spark只是利用HIVE设置,简单地通过Spark SQL API执行SQL。
我的理解是否正确?
然后我对bin/ www.example.com的用法有点困惑spark-sql.sh(它也存在于Spark安装中)。文档说通过这个SQL shell,我们可以像上面那样创建表(通过Thrift Server/Beeline)。现在我的问题是:那么spark是如何维护元数据信息的?
或者像第一种方法一样,我们可以让spark-sql CLI与HIVE进行通信(具体来说:HIVEServer 2)?如果是,我们如何做到这一点?
提前感谢!
1条答案
按热度按时间oprakyz71#
我的理解是Spark没有像HIVE那样的 meta存储设置
如果没有提供Hive元存储库,Spark将自己启动Derby服务器
我们是否可以使spark-sql CLI与HIVE通信
启动外部元存储进程,使用
hive.metastore.uris
将hive-site.xml
文件添加到$SPARK_CONF_DIR
,或使用SET
SQL语句执行相同操作。然后,
spark-sql
CLI应该能够查询配置单元表。在代码中,您需要在SparkSession上使用enableHiveSupport()
方法。