【问题标题】:Query Hive table in spark 2.2.0在 spark 2.2.0 中查询 Hive 表
【发布时间】:2019-11-10 22:34:59
【问题描述】:

我有一个 avro 文件格式的配置单元表(比如 table1),包含 1900 列。当我在 hive 中查询表时 - 我能够获取数据,但是当我在 spark sql 中查询同一个表时,我发现 Metastore 客户端失去了连接。正在尝试重新连接

我还查询了另一个 avro 文件格式的 hive 表(比如 table2),它有 130 列,它在 hive 和 spark 中获取数据。

我观察到的是我可以在 table2 的 hdfs 位置看到数据,但在 table1 hdfs 位置看不到任何数据(但是当我只在 hive 中查询时它正在获取数据)

【问题讨论】:

  • 当您从 Spark 查询此 table1 时,您是否一直收到错误 - “Metastore 客户端丢失连接”?当您看到错误时,值得检查 HMS 和后端数据库的可用性。

标签: apache-spark hadoop hive apache-spark-sql


【解决方案1】:
  1. Split 告诉您 MR 作业中的映射器数量。
  2. 它不会显示采集数据的确切位置。

【讨论】:

    【解决方案2】:

    下面将帮助您检查 Table1 的数据在 HDFS 中的存储位置。

    对于表 1:您可以通过使用 MapReduce 作为执行引擎在 Hive 中运行带有 WHERE 条件的 SELECT 查询来检查数据在 HDFS 中的位置。作业完成后,您可以检查 YARN 应用程序的映射任务日志(特别是文本“处理文件”)并查找输入数据文件的来源。

    另外,尝试通过运行“SHOW CREATE TABLE ;”检查 HiveMetastore 中存在的两个表的数据位置在 Hive 中的两个表中。从结果中,尝试检查“LOCATION”详细信息。

    【讨论】:

    • 在系统日志中,我只能看到暂存和中间位置,但不确定数据来自何处。 2. Metastore 客户端丢失连接的任何建议。 3. Show create table cmd中的位置没有数据
    • 您是否尝试在 YARN MR appln log 的 sys log 中寻找“split”或“input split”?
    • Split 告诉你 MR 工作中的映射器数量。它不会向您显示选择数据的确切位置。
    • 好的。是我的错。它应该是地图任务的日志。我用正确的细节编辑了上面的答案。您需要做的是, 1. 对包含 WHERE 条件的表运行 SELECT 查询(以便触发 MapReduce 作业)。 2. 检查此 YARN MapReduce 应用程序日志的 Map 日志中是否有文本“Processing file” 3. 这应该告诉您从何处提取数据文件进行处理。如果有帮助,请告诉我!
    猜你喜欢
    • 1970-01-01
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-11
    相关资源
    最近更新 更多