无法在 Spark SQL 中查看 Hive 记录,但可以在 Hive CLI 上查看它们

Posted

技术标签:

【中文标题】无法在 Spark SQL 中查看 Hive 记录,但可以在 Hive CLI 上查看它们【英文标题】:Unable to view Hive records in Spark SQL, but can view them on Hive CLI 【发布时间】:2018-01-11 11:52:01 【问题描述】:

我。

Hive CLI 显示 2 条记录,使用 hive 上下文的相同查询显示 0

在蜂巢中

hive> select ord_id from order;
OK
157434411
157435932
Time taken: 0.389 seconds, Fetched: 2 row(s)

在 Spark SQL 中

   hiveCtx.sql("select ord_id from order").show()
   +------------+
   |ord_id      |
   +------------+
   +------------+

我已尝试刷新表并重新启动 Hive,但问题仍然存在。

我已经检查了unable-to-view-data-of-hive-tables-after-update-in-spark 的解决方案,但似乎没有任何效果。

如有任何建议,我们将不胜感激。

编辑:

更正了上面列的名称。 我还提供了 desc 的输出:

hive> desc rpt_derived.rpttradeleg;
OK                                  
ord_id              string                                      
ord_date            timestamp                                                                   
cust_buy_sell       string                                      
ord_cust_entity     string                                                              
ord_deal_year           int                                         
ord_deal_month          int                                         
ord_deal_day            int                                         

# Partition Information      
# col_name              data_type               comment             

ord_year        int                                         
ord_month       int                                         
ord_day         int                                         
Time taken: 2.036 seconds, Fetched: 16 row(s)
hive> 

来自 Spark SQL:

scala> hiveContext.sql("desc rpt_derived.rpttradeleg").show()
+--------------------+---------+-------+
|            col_name|data_type|comment|
+--------------------+---------+-------+
|              ord_id|   string|       |
|            ord_date|timestamp|       |
|       cust_buy_sell|   string|       |
|     ord_cust_entity|   string|       |
|       ord_deal_year|      int|       |
|      ord_deal_month|      int|       |
|        ord_deal_day|      int|       |
+--------------------+---------+-------+

Spark版本:spark-1.5.0+cdh5.5.2+114

Hive 版本:hive-1.1.0+cdh5.5.2+377

【问题讨论】:

【参考方案1】:
To connect to hive metastore you need to copy the hive-site.xml file into 
spark/conf directory.After that spark will be able to connect to hive 
metastore.
so run the  following command after log in as root user   



cp  /usr/lib/hive/conf/hive-site.xml    /usr/lib/spark/conf/

or use hiveCtx.sql("select *from databasename.tablename").show()

I hope, it will work for you.

【讨论】:

嗨 Mohit,我已经在 conf 目录中有 hive-site.xml 作为符号链接。

以上是关于无法在 Spark SQL 中查看 Hive 记录,但可以在 Hive CLI 上查看它们的主要内容,如果未能解决你的问题,请参考以下文章

无法在 spark 中使用 hive 支持创建 sql 上下文

在 HDP 的 spark2 sql 中无法访问 Hive 表

无法从 impala/hive/spark sql 访问“spark 注册表”

无法在hive分区表中查看数据

Spark SQL - Hive“无法覆盖表”解决方法

Spark Shell 的 Spark Session 中不显示新插入的 Hive 记录