标签: hive-metastore

java.lang.RuntimeException:无法实例化org.apache.hadoop.hive.metastore.HiveMetaStoreClient

我已经在链接上配置了我的Hive:http://www.youtube.com/watch?v = Dqo1ahdBK_A,但是在Hive中创建表时出现以下错误.我使用hadoop-1.2.1和hive-0.12.0.

hive> create table employee(emp_id int,name string,salary double);
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
Run Code Online (Sandbox Code Playgroud)

hive hiveql hive-metastore

33
推荐指数
3
解决办法
8万
查看次数

如何检查Hive中是否存在分区?

我有一个Hive表,它由列分区dt.如果不存在,我需要添加一个分区,例如,dt='20181219'.

现在我正在使用HiveMetaStoreClient#getPartition(dbName, tableName, 20181219).如果分区不存在,则捕获NoSuchObjectException并添加它.

在Java中有没有优雅的方法来实现这一目标?

java hive hive-metastore

8
推荐指数
1
解决办法
441
查看次数

将 AWS Glue 数据目录用作 EMR 上 Spark SQL 的元存储的问题

我有一个带有 Spark(v2.2.1) 的 AWS EMR 集群 (v5.11.1),并尝试使用 AWS Glue 数据目录作为其元存储。根据官方 AWS 文档(下面的参考链接)中提供的指南,我已按照这些步骤操作,但在访问 Glue 目录数据库/表时遇到了一些差异。EMR 集群和 AWS Glue 都在同一个账户中,并提供了适当的 IAM 权限。

AWS 文档https : //docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-glue.html


观察:

- 使用 spark-shell(来自 EMR 主节点):

- 使用 spark-submit(来自 EMR 步骤):

  • 不起作用。不断收到错误“数据库'test_db'不存在”

错误跟踪如下:

INFO HiveClientImpl:Hive 客户端(版本 1.2.1)的仓库位置是 hdfs:///user/spark/warehouse
INFO HiveMetaStore: 0: get_database: 默认
INFO audit: ugi=hadoop ip=unknown-ip-addr cmd=get_database:默认
信息 HiveMetaStore:0:get_database:global_temp
信息审计:ugi=hadoop ip=unknown-ip-addr cmd=get_database:global_temp
WARN ObjectStore:无法获取数据库 global_temp,返回 NoSuchObjectException
INFO SessionState:创建的本地目录:/mnt3/yarn/ usercache / Hadoop的/应用程序缓存/ application_1547055968446_0005 / container_1547055968446_0005_01_000001的/ …

amazon-emr apache-spark aws-glue hive-metastore aws-glue-data-catalog

8
推荐指数
0
解决办法
6356
查看次数

如何获取列名并输入 hive

我知道这些,

我知道我可以使用上面的查询并过滤结果以获取列名称和类型。但我想知道是否有任何直接命令可以只获取列名和类型,例如select columns, column_type ...

hive hive-metastore

7
推荐指数
2
解决办法
2万
查看次数

当联接密钥是bucketBy密钥的超集时,如何说服火花不要进行交换?

在测试生产用例时,我创建并保存了(使用Hive Metastore)这样的表:

table1:
fields: key1, key2, value1
sortedBy key1,key2
bucketBy: key1, 100 buckets

table2:
fields: key1, key2, value2
sortedBy: key1,key2
bucketBy: key1, 100 buckets
Run Code Online (Sandbox Code Playgroud)

我正在运行这样的查询(以伪代码)

table1.join(table2, [“key1”, “key2”])
 .groupBy(“value2”)
 .countUnique(“key1”)
Run Code Online (Sandbox Code Playgroud)

常识说,这种连接应该简单地通过没有任何交换的排序合并连接来完成。但是spark进行了交流然后加入。

即使对于这个特定的用例,我也可以按两个键进行存储,由于其他一些用例,我需要按key1进行存储。当我使用这样的单个键进行(更简单的)连接时:

table1.join(table2, [“key1”])
Run Code Online (Sandbox Code Playgroud)

它按预期方式工作(即不进行任何排序的合并合并)。

现在,如果要过滤,我对这些表进行了优化联接,如下所示:

table1.join(table2, [“key1”])
 .filter(table1.col(“key2”) == table2.col(“key2”))
Run Code Online (Sandbox Code Playgroud)

它恢复为交换,然后加入。

当联接密钥是bucketBy密钥的超集时,如何说服火花不要进行交换?

注意:

我知道的一个技巧是,如果我将不等式检查改写为等式检查,则火花不会洗牌。

(x == y)也可以表示为((x> = y)&(x <= y))。如果我在上一个示例中应用了两个这样的过滤器:

.filter(table1.col(“ key2”)> = table2.col(“ key2”))

.filter(table1.col(“ key2”)<= table2.col(“ key2”))

它将继续使用sort-merge join,而不会进行交换,但这不是解决方案,这是一个hack。

join bucket apache-spark hive-metastore

7
推荐指数
1
解决办法
243
查看次数

Hive服务,HiveServer2和MetaStore服务?

我试图hive从体系结构方面来理解,我指的是汤姆·怀特(Tom White)关于Hadoop的书。

我遇到下列条款进来问候蜂巢:Hive Serviceshiveserver2metastore 等等。

请参考本书中的以下图表(Hadoop:权威指南)。

蜂巢架构:

在此处输入图片说明

MetaStore配置:

在此处输入图片说明

Hive体系结构显示什么是“驱动程序”:

在此处输入图片说明

我无法理解以下内容:

1)Hive ServicesHive架构图中有什么?我们说的也一样hiveserver2吗?

2)DriverHive架构图中是什么?

3)是什么MetaStore(我不是指Metastore数据库)。是否正在运行某些流程?如果是这样,这是hiveserver2吗?由于该图MetaStore可以是远程的,因此,如果这是一个JVM进程,它属于哪个组件?

4)说Hive service JVMMetaStore JVM Server。但是,这些组件在哪里安装?它们是“配置单元”的“服务器”端的一部分吗?

5)在“ Hive体系结构”图中,是否显示“ Hive Server”?这是什么?这就是我们所说的“ Hive Server 1”,“ Hive Server2”。

谁能帮忙了解一下?

hadoop hive hive-metastore

6
推荐指数
1
解决办法
3426
查看次数

AWS Glue Data Catalog as Metastore用于Databricks等外部服务

比方说,datalake在AWS上.使用S3作为存储,使用Glue作为数据目录.因此,我们可以使用Glue作为Metastore轻松使用athena,redshift或EMR来查询S3上的数据.

我的问题是,是否可以将Glue数据目录公开为AWS上托管的Databricks等外部服务的Metastore?

amazon-s3 data-lake databricks aws-glue hive-metastore

6
推荐指数
1
解决办法
900
查看次数

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

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

AnalysisException: u'java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient;
Run Code Online (Sandbox Code Playgroud)

我想使用 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 页面中的笔记本链接创建一个 EMR 笔记本,将其附加到您刚刚创建的集群并打开它(默认情况下,选择的内核将为 pyspark,如笔记本右上角所示)。

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

hadoop amazon-emr apache-spark pyspark hive-metastore

6
推荐指数
1
解决办法
2749
查看次数

Hadoop 3 中的 Spark 和 Hive:metastore.catalog.default 和 spark.sql.catalogImplementation 之间的区别

我正在使用 Hadoop 3 处理 Hadoop 集群 (HDP)。还安装了 Spark 和 Hive。

由于 Spark 和 Hive 目录是分开的,因此有时会有点混乱,要知道如何以及在 Spark 应用程序中保存数据的位置。

我知道,该属性spark.sql.catalogImplementation可以设置为in-memory(使用基于 Spark 会话的目录)或hive(使用 Hive 目录进行持久元数据存储 -> 但元数据仍与 Hive DB 和表分开)。

我想知道物业metastore.catalog.default是做什么的。当我将其设置hive为时,我可以看到我的 Hive 表,但由于这些表存储/warehouse/tablespace/managed/hive在 HDFS的目录中,我的用户无权访问该目录(因为 hive 是所有者)。

那么,metastore.catalog.default = hive如果我无法从 Spark 访问表,为什么要设置, 呢?和 Hortonwork 的 Hive Warehouse Connector 有关系吗?

感谢您的帮助。

hadoop hive apache-spark hadoop3 hive-metastore

6
推荐指数
1
解决办法
1959
查看次数

如何在 Kubernetes 中安装 Hive Metastore?

我正在开发一个关于 Kubernetes 的项目,在该项目中我使用 Spark SQL 创建表,并且我想将分区和模式添加到 Hive Metastore。但是,我没有找到任何在 Kubernetes 上安装 Hive Metastore 的正确文档。知道我已经安装了 PostGreSQL 数据库是否有可能?如果是的话,您能帮我提供任何官方文件吗?

提前致谢。

apache-spark kubernetes hive-metastore

5
推荐指数
1
解决办法
4876
查看次数