问题标签 [hive-metastore]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
6771 浏览

apache-spark - 如何在 Spark 中获取 hive 表的分区信息

我想像这样通过 Spark 执行 SQL。

但我想在执行避免全扫描之前对表进行分区检查。

如果表是分区表,我的程序会强制用户添加分区过滤器。如果没有,可以运行。

所以我的问题是如何知道一个表是否是一个分区表?我的想法是从 Metastore 中读取信息。但是如何获取 Metastore 是我遇到的另一个问题。有人可以帮忙吗?

0 投票
1 回答
154 浏览

sql - 给定 Timestamp 对象作为分区键,如何从 hive-metastore 获取分区路径

在 spark 中,有没有办法通过提供 Timstamp 对象来获取分区路径,而不是提供分区键作为字符串?

我知道我们可以通过运行以下查询来获取分区路径:

但上述查询需要将分区键作为字符串。

0 投票
0 回答
18 浏览

hive-metastore - 在负载均衡器后面的 ec2 机器中创建外部配置单元元存储

我想创建一个连接到 mysql 的外部配置单元元存储服务。如何在提供可连接到我的 EMR 或 Hdinsight 或 databricks 集群的 api 的 EC2 机器上创建外部配置单元元存储服务。

很多关于使用 Metastore 服务的文章,但看不到任何关于在 ec2 机器上设置 hive Metastore 服务的文章

0 投票
2 回答
1578 浏览

apache-spark - 如何修复 pyspark EMR Notebook 上的错误 - AnalysisException:无法实例化 org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

我正在尝试使用附加到 EMR 的 EMR 笔记本在公共数据集上使用 spark.sql() 或 sqlContext.sql() 方法运行 SQL 查询(这里 spark 是我们启动 EMR Notebook 时可用的 SparkSession 对象的变量)安装了 Hadoop、Spark 和 Livy 的集群。但是在运行任何基本的 SQL 查询时,我都会遇到错误:

我想使用 SQL 查询,所以我不想使用 Dataframe API 作为替代方案。

这个 spark EMR 集群没有安装单独的 Hive 组件,我不打算使用它。我已尝试寻找导致此问题的各种原因,其中一个原因可能是 EMR 笔记本可能没有创建 metastore_db 的写入权限。但是,我无法证实这一点。我试图在集群的日志文件中找到此错误,但无法找到它,并且不确定哪个文件可能包含此错误以获取更多详细信息。

重现问题的步骤:

  1. 使用控制台创建 AWS EMR 集群并使用快速启动视图,选择 spark 选项。它将包括基于 Hadoop 2.8.5 YARN 的 Spark 2.4.3 以及 Ganglia 3.7.2 和 Zeppelin 0.8.1。它可以只有 1 个主节点和 2 个核心节点,甚至可以只有 1 个主节点。

  2. 从 EMR 页面中的 Notebooks 链接创建一个 EMR Notebook,将其附加到您刚刚创建的集群并打开它(默认情况下,选择的内核将是 pyspark,如笔记本右上角所示)。

  3. 我正在使用的代码在公开的亚马逊评论数据集上运行 spark.sql 查询。
  4. 代码:

我希望从这个数据集中返回 5 个 product_id 但是我得到了错误:

0 投票
0 回答
201 浏览

apache-spark - 为什么 SparkContext 会创建大量与 Hive Metastore 的连接并扫描所有数据库?

一个管理和监控我们的 hadoop 集群的团队通知我们,我们的 Spark 作业(数百个)对集群有负面影响。显然,每个创建 SparkContext 的作业也会自动创建大量到 Hive Metastore 的连接并“扫描”所有数据库和表(请参阅下面的日志)。

在做了一些测试之后,我们观察到,在我们使用 Spark 1.6 ( /usr/hdp/current/spark-client )创建 SparkContext 之后,我们观察到上述行为。一旦我们切换到 Spark 2 ( /usr/hdp/current/spark2-client ),我们就看不到任何与 Hive Metastore 的连接。

这是代码:

我们使用:HDP 2.5;Spark 1.6(PySpark API);蜂巢:1.2.1;集群管理器:纱线

你们能解释一下为什么 Spark 1.6 会发生这种情况,以及避免与 Hive Metastore 建立所有这些连接的可能解决方案是什么(切换到 Spark 2 除外)?非常感谢任何关于挖掘方向的建议。

我查看了 hadoop 和 hive 配置属性,但我不知道更改其中一个或多个是否会对我们有所帮助。我还阅读了有关 HiveSupport() 的信息,但我相信它只能从 2.0 版开始使用。

2019-09-10 10:32:26,662 信息 [pool-7-thread-56114]: HiveMetaStore.audit (HiveMetaStore.java:logAuditEvent(319)) - ugi=@ ip= cmd=get_all_databases 2019-09-10 10: 32:26,898 信息 [pool-7-thread-56114]: HiveMetaStore.audit (HiveMetaStore.java:logAuditEvent(319)) - ugi=@ ip= cmd=get_functions: db=db1 pat=* 2019-09-10 10: 32:26,902 信息 [pool-7-thread-56114]: HiveMetaStore.audit (HiveMetaStore.java:logAuditEvent(319)) - ugi=@ ip= cmd=get_functions: db=db2 pat=* 2019-09-10 10: 32:26,904 信息 [pool-7-thread-56114]: HiveMetaStore.audit (HiveMetaStore.java:logAuditEvent(319)) - ugi=@ ip= cmd=get_functions: db=db3 pat=* 2019-09-10 10: 32:26,905 信息 [pool-7-thread-56114]: HiveMetaStore.audit (HiveMetaStore.java:logAuditEvent(319)) - ugi=@ ip= cmd=get_functions: db=db4 pat=* 2019-09-10 10: 32:26,907 信息 [pool-7-thread-56114]:HiveMetaStore.audit (HiveMetaStore.java:logAuditEvent(319)) - ugi=@ ip= cmd=get_functions: db=db5 pat=* 2019-09-10 10:32:26,909 INFO [pool-7-thread-56114]: HiveMetaStore.audit (HiveMetaStore.java:logAuditEvent(319)) - ugi=@ ip= cmd=get_functions: db=db6 pat=* 2019-09-10 10:32:26,910 INFO [pool-7-thread-56114]: HiveMetaStore.audit (HiveMetaStore.java:logAuditEvent(319)) - ugi=@ ip= cmd=get_functions: db=db7 pat=* 2019-09-10 10:32:26,912 INFO [pool-7-thread-56114]: HiveMetaStore.audit (HiveMetaStore.java:logAuditEvent(319)) - ugi=@ ip= cmd=get_functions: db=db8 pat=* 2019-09-10 10:32:26,914 INFO [pool-7-thread-56114]: HiveMetaStore.audit (HiveMetaStore.java:logAuditEvent(319)) - ugi=@ ip= cmd=get_functions: db=db9 pat=*db=db5 pat=* 2019-09-10 10:32:26,909 信息 [pool-7-thread-56114]: HiveMetaStore.audit (HiveMetaStore.java:logAuditEvent(319)) - ugi=@ ip= cmd=get_functions: db=db6 pat=* 2019-09-10 10:32:26,910 信息 [pool-7-thread-56114]: HiveMetaStore.audit (HiveMetaStore.java:logAuditEvent(319)) - ugi=@ ip= cmd=get_functions: db=db7 pat=* 2019-09-10 10:32:26,912 信息 [pool-7-thread-56114]: HiveMetaStore.audit (HiveMetaStore.java:logAuditEvent(319)) - ugi=@ ip= cmd=get_functions: db=db8 pat=* 2019-09-10 10:32:26,914 信息 [pool-7-thread-56114]: HiveMetaStore.audit (HiveMetaStore.java:logAuditEvent(319)) - ugi=@ ip= cmd=get_functions: db=db9 拍=*db=db5 pat=* 2019-09-10 10:32:26,909 信息 [pool-7-thread-56114]: HiveMetaStore.audit (HiveMetaStore.java:logAuditEvent(319)) - ugi=@ ip= cmd=get_functions: db=db6 pat=* 2019-09-10 10:32:26,910 信息 [pool-7-thread-56114]: HiveMetaStore.audit (HiveMetaStore.java:logAuditEvent(319)) - ugi=@ ip= cmd=get_functions: db=db7 pat=* 2019-09-10 10:32:26,912 信息 [pool-7-thread-56114]: HiveMetaStore.audit (HiveMetaStore.java:logAuditEvent(319)) - ugi=@ ip= cmd=get_functions: db=db8 pat=* 2019-09-10 10:32:26,914 信息 [pool-7-thread-56114]: HiveMetaStore.audit (HiveMetaStore.java:logAuditEvent(319)) - ugi=@ ip= cmd=get_functions: db=db9 拍=*HiveMetaStore.audit (HiveMetaStore.java:logAuditEvent(319)) - ugi=@ ip= cmd=get_functions: db=db7 pat=* 2019-09-10 10:32:26,912 INFO [pool-7-thread-56114]: HiveMetaStore.audit (HiveMetaStore.java:logAuditEvent(319)) - ugi=@ ip= cmd=get_functions: db=db8 pat=* 2019-09-10 10:32:26,914 INFO [pool-7-thread-56114]: HiveMetaStore.audit (HiveMetaStore.java:logAuditEvent(319)) - ugi=@ ip= cmd=get_functions: db=db9 pat=*HiveMetaStore.audit (HiveMetaStore.java:logAuditEvent(319)) - ugi=@ ip= cmd=get_functions: db=db7 pat=* 2019-09-10 10:32:26,912 INFO [pool-7-thread-56114]: HiveMetaStore.audit (HiveMetaStore.java:logAuditEvent(319)) - ugi=@ ip= cmd=get_functions: db=db8 pat=* 2019-09-10 10:32:26,914 INFO [pool-7-thread-56114]: HiveMetaStore.audit (HiveMetaStore.java:logAuditEvent(319)) - ugi=@ ip= cmd=get_functions: db=db9 pat=*db=db9 拍=*db=db9 拍=*

...

0 投票
2 回答
1155 浏览

hcatalog - 如何独立使用 Hive Metastore?

我独立安装并运行了 Metastore 服务器,没有安装 Hive。但是,我找不到任何有关与服务器通信的节俭网络 API 的文档。我需要能够直接或通过 HCatalog 连接到 Metastore 服务器。请指教。

0 投票
1 回答
34 浏览

sql - 在不同组中跨数据类型进行比较时如何处理潜在的数据丢失

背景: 我们的团队正在将 Cloudera 升级到 6.1.1,我的任务是确定如何处理跨数据类型的隐式数据类型转换丢失。有关相关发行说明的详细信息,请参见下面的链接。

https://docs.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_cdh_611_incompatible_changes.html#hive_union_all_returns_incorrect_data

这个问题不仅会影响 UNION ALL 查询,而且还有一个函数可以对不同数据类型的列(即 STRING 到 BIGINT)执行比较。

该小组已决定我们不希望更改基础表元数据。因此解决方案是通过使用 CAST() 函数转换数据来允许潜在的数据丢失。在 UNION ALL 的情况下,我们强制转换为目标表的元数据。但是,在执行比较时,我试图确定执行比较的最简单和最简单的方法,而不会得到错误的结果。

问题:

执行比较时,我可以简单地将所有内容转换为 STRING 或 VARCHAR() 吗?是否存在任何可能导致错误结果的潜在问题?

更新: 如果这种方法有问题,是否有正确的解决方案来处理这个问题?

注意:这是我第一次使用 Hadoop/HIVE,我了解到我在 RDBMS 领域所知道的一切并不总是适用。

0 投票
1 回答
234 浏览

sql - 如何比较具有不同数据类型组的两列

这是我昨天提出的一个问题的延伸:如何在对不同组中的数据类型进行比较时处理潜在的数据丢失

在 HIVE 中,是否可以在SELECT子句内内联的不同数据类型组中的两列之间执行比较?我需要首先确定每一列的传入元数据是什么,然后提供选择CAST使用什么的逻辑。

如果这是不可能的,是否有一种解决方法来检索元数据并根据某些规则执行 CAST'ing?例如,如果:

  1. Column1 是 BIGINT
  2. 第 2 列是字符串

然后将 Column2 转换为 BIGINT,然后执行比较。需要尽可能简单的解决方案。我希望不必对生成SELECT语句的底层系统进行大量代码更改。

更新 2: 有一个生成 SQOOP 查询的后端系统,并且在该系统中有一个修改 SELECT 子句以比较两列的函数。我们遇到的问题是,这些列曾经在我们运行的早期版本的 HIVE/Cloudera 上被隐式转换。现在我们正在升级到不支持隐式数据类型转换的版本,我们需要找到最简单的解决方案来继续支持数据类型转换。不幸的是,后端没有可用的元数据,所以我试图在SELECT子句中破解它

0 投票
2 回答
2166 浏览

sql - 是否可以更改 HIVE 中的分区元数据?

这是我之前提出的问题的扩展:如何比较具有不同数据类型组的两列

我们正在探索更改表上的元数据的想法,而不是对 SELECT 语句中的数据执行 CAST 操作。更改 MySQL 元数据中的元数据非常简单。但是,是否可以将元数据更改应用于分区(它们是每天的)?否则,我们可能会遇到当前和未来数据为 BIGINT 类型而历史为 STRING 的情况。

问题:是否可以更改 HIVE 中的分区元数据?如果是,如何?

0 投票
0 回答
321 浏览

hive-metastore - Apache hive-metastore 独立显示错误“Kerberos 主体应包含 3 个部分:”

我正在 DC/OS 上使用 kerberos 部署 hive-metastore-3.0.0 我已经正确生成了主体和 keytab 并验证了相同的内容,但是在metastore-site.xml静态服务器中提供相应设置时显示错误“Kerberos 主体应该有 3 个部分:”它默认拾取我的用户“nobody or root”,我通过它运行服务而不是主体。请求您帮助我是否需要设置任何其他属性?

metastore-site.xml的是: