• A
    2021-11-09
    不过,相比前者,spark-sql CLI 的集成方式多了一层限制,那就是在部署上,spark-sql CLI 与 Hive Metastore 必须安装在同一个计算节点。换句话说,spark-sql CLI 只能在本地访问 Hive Metastore,而没有办法通过远程的方式来做到这一点。 ---------我试了试是可以的老师,是我对这句话理解有误嘛?三台机器 01、02、03;01、02启动hive metastore,然后在03上启动spark-sql spark://bdp-dc-003:7077 同样是可以使用hive的metastore

    作者回复: 理解的没有问题~ 这块限制,随着Spark社区和Hive社区的发展,确实已经消除了,我后面会抽时间,改一下这里的原文描述,给兄弟们带来的困惑,表示抱歉哈~

    
    7
  • Unknown element
    2021-12-20
    老师问下 Beeline + Spark Thrift Server 这种部署方式应该怎么配置spark参数呢?我看我们公司的文件是在hivesql里带上类似 set hive.exec.parallel=true; 这种参数,这和用dataframe api设置参数不太一样啊。。如果在 hive sql里配置的话它的参数和spark的参数的对应关系是怎样的呢?谢谢老师~

    作者回复: Beeline + Spark Thrift Server 这种方式,走的是Spark的计算引擎,所以set hive.exec.parallel=true这类Hive specific的参数,在这里其实是不起作用的。 不过在Hive on Spark的模式下,Hive相关的设置项都会起作用。其实本质上,还是要区分优化引擎和计算引擎。在Hive on Spark里面,Hive和Spark配置项都会起作用,Hive负责优化,Spark负责执行。而在Spark with Hive Metastore的集成模式下,Spark做优化,Spark做执行,这个时候,Hive的配置项就没什么用了哈~

    
    
  • Unknown element
    2021-11-25
    问题一的执行路径是不是还是先建立dataframe,然后根据sql逻辑完成计算,最后存到hive?虽然是hive on spark但是我理解这种情况下应该没有用到hive的优化引擎吧

    作者回复: 是的,用户代码走的还是Spark with Hive metastore的路径,也就是仅仅把Hive当做元数据管理器,从Hive扩充数据源,或是把数据写到Hive中去~ 对于Hive on Spark来说,Spark只是后端的计算引擎,提交给Hive的SQL,会通过Hive本身的解析、优化,再交给Spark去执行而已

    
    
  • HHB
    2021-11-19
    老师请问,Hive with Spark的方式比直接使用spark sql的性能高吗?

    作者回复: 你说的是Hive on Spark吗?一般来说,Hive on Spark的性能,比Spark with Hive metastore或是Spark SQL本身,性能都要差一些,原因的话,老弟可以根据架构图来琢磨琢磨哈~

    
    
  • Geek_995b78
    2021-10-31
    老师,我把hive引擎换成spark后,一直出现这个错误,我看了 资源充足呀,您看一下,是什么原因呢 hive (test)> select count(*) from spark_hive group by id; Query ID = root_20211031144450_fc398bef-8f94-4a07-a678-cdeef464b128 Total jobs = 1 Launching Job 1 out of 1 In order to change the average load for a reducer (in bytes): set hive.exec.reducers.bytes.per.reducer=<number> In order to limit the maximum number of reducers: set hive.exec.reducers.max=<number> In order to set a constant number of reducers: set mapreduce.job.reduces=<number> Starting Spark Job = 75d07aa7-a98f-43b5-8fe5-de4158f454a7 Job hasn't been submitted after 61s. Aborting it. Possible reasons include network issues, errors in remote driver or the cluster has no available resources, etc. Please check YARN or Spark driver's logs for further information. Status: SENT Failed to execute spark task, with exception 'java.lang.IllegalStateException(RPC channel is closed.)' FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. RPC channel is closed.
    展开

    作者回复: Hive on Spark对于版本一致性要求比较高,这个是比较麻烦和比较坑的一点。上面的报错,是因为Hive和Spark版本不一致导致的,老弟可以参考这里,去根据两个组件版本的要求来配置Hive on Spark: https://cwiki.apache.org/confluence/display/Hive/Hive+on+Spark%3A+Getting+Started

    共 3 条评论
    
  • qinsi
    2021-10-26
    理论上应该可以把HQL转换成Spark SQL吧,那样Hive on Spark是不是性能就会提升了?

    作者回复: 对,理论上是这样的。不过,Hive社区不会这么做,为啥呢?因为Hive社区是从自身的设计出发,它还要顾及MapReduce和Tez,所以不会轻易动自身的优化引擎。不过讲道理,如果Hive实现了一套与Spark SQL一样的优化机制,那么Hive on Spark性能,就会像你说的,有所提升~

    共 2 条评论
    
  • gouge
    2021-10-26
    老师,请问为什么会有这个限制?“spark-sql CLI 的集成方式多了一层限制,那就是在部署上,spark-sql CLI 与 Hive Metastore 必须安装在同一个计算节点”。 我实验好像没有发现存在这个“限制”。如下: 我在本地配置 %SPARK_HOME%/conf/hive-site.xml,内容如下: <configuration> <property> <name>hive.metastore.uris</name> <value>thrift://xxx:9083</value> </property> </configuration> 其中xxx:9083为远程服务器上部署的hive metastore。通过这样的配置,再执行%SPARK_HOME%/bin/spark-sql,是可以查询到hive的元数据信息的。 谢谢!

    作者回复: 好问题~ 是这样的,spark-sql会在进程内启动自己的Metastore service,然后尝试去连接MySQL database(Metastore database),我可能原文没有交代清楚。老弟帮忙看下,看看hive-site.xml中,是否有Metastore database相关的配置项,推测是spark-sql自己的Metastore service通过hive-site.xml里面的database信息,直连的MySQL database。 老弟帮忙确认下哈~

    共 4 条评论
    
  • Geek_e2be2a
    2022-07-17
    官方的Spark Thriftserver功能比较弱,可以试一下Apache Kyuubi
    
    5
  • 钱鹏 Allen
    2022-11-10 来自广东
    Spark是计算引擎,而Hive是开发侧实现业务逻辑的入口 Hive的设计优势在于兼容,不同于以往的pig,他只需要写sql 同时也能优化计算逻辑,最终将计算过程放在map—reduce上
    
    
  • Geek_278a2c
    2022-03-15
    1,请问可以通过hive sql create table并插入数据,然后通过spark sql访问吗?(配置同一个hive metastore) 2,类似的,请问可以通过hive sql create udf,然后通过spark sql使用udf吗?
    
    