Spark中HIVE表的显示[重复]

Posted

技术标签:

【中文标题】Spark中HIVE表的显示[重复]【英文标题】:Display of HIVE table in Spark [duplicate] 【发布时间】:2018-01-03 15:04:09 【问题描述】:

我正在尝试读取 Spark 1.6.1 中的 HIVE 表。一切都按要求工作,只有 Spark 中表格的显示是有线的。 HIVE 表包含 1 亿条奇数记录。

import os
from pyspark import SparkContext
sc = SparkContext("local", "Simple App")
from pyspark.sql import HiveContext

hive_context = HiveContext(sc)

db= hive_context.sql("SELECT * FROM HIVE_DB.HIVE_TBL").show()

如您所见,我编写了查询以查看全部 1 亿条记录。但输出仍然是 20 条记录。我的问题:

    这是 Spark 1.6.1 的某种限制吗?

    如果是,是否在更高的 Spark 版本中排除了限制?

    如果以上都不是,那么有没有办法更改此配置以查看任何记录?

我也尝试过以下查询::

SELECT * FROM HIVE_DB.HIVE_TBL LIMIT 200

还是一样的显示。

【问题讨论】:

我看到了你分享的链接,我认为这是需要的解决方案。虽然我仍然需要测试它。完成后会在这里发布我的发现 【参考方案1】:

show() - 仅显示 20 行。因此,如果将show() 的结果分配给变量db,它将只有20 个。

在分配期间删除show(),并使用db.limit(n) 来限制行数。

【讨论】:

【参考方案2】:

在 Scala 中,下面的代码可以工作

import org.apache.spark.sql.hive.HiveContext
val sqlContext = new HiveContext(sc)
var db = sqlContext.sql("select *from database_name.table_name")
db.take(n).foreach(println)         #n, number of records


db = sqlContext.sql("select *from database_name.table_name").limit(n)
#n, number of records.
db.foreach(println);

【讨论】:

以上是关于Spark中HIVE表的显示[重复]的主要内容,如果未能解决你的问题,请参考以下文章

单个记录查找的 Spark 性能

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

Hive和Spark当中对小文件的处理

Spark 不显示 Hive 表中的数据

[Spark][Hive][Python][SQL]Spark 读取Hive表的小例子

Hive:如何显示表的所有分区?