问题标签 [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 投票
1 回答
1079 浏览

hive - 如何使用最新的 AVRO 模式文件更新配置单元表元数据

失败:RuntimeException MetaException(消息:org.apache.hadoop.hive.serde2.SerDeException 遇到 AvroSerdeException 确定架构。返回信号架构以指示问题:无法从给定路径读取架构:/master_data/XYZ/DA12195/business_date=20181126/_schema .avsc)

架构文件存在于 business_date=20181129 的新分区中,但配置单元表仍指向旧分区中的架构文件。

0 投票
1 回答
1190 浏览

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

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

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

有没有什么优雅的方法可以在 Java 中实现这一点?

0 投票
0 回答
529 浏览

hadoop - 使用 Oozie 在 Shell 操作中创建/运行 Sqoop 作业

我正在尝试使用 Oozie 在 Shell 脚本中运行 Sqoop 作业。请注意,我在本地机器(具有 12G RAM 的 vm)中使用 cdh5,并使用 HUE 来构建工作流程。

我在 shell 脚本中创建了一个 Sqoop 作业,该作业将数据从 Mysql 提取到 HDFS。我使用 Oozie 运行它:

Job 已创建(我可以在执行 list cmd 时找到它,见下文):

sqoop 作业 --list

我什至从我的终端执行了这项工作并且它可以工作(见下面的 cmd):

我删除了最后一个导入的文件夹,并尝试再次执行该作业,但这次是在 Oozie 中。它给出了一个错误(见下文):

这是 sqoop-site.xml:

这是workflow.xml:

这是 HUE 的视图:HUE 中的工作流程

我试图在 Oozie 的 shell 脚本中运行 sqoop 作业的原因是,我想创建一个 sqoop 作业来记住最后导入的值,以便它可以增加表,然后使用 Oozie 对其进行调度。所以这只是第一步测试!

你能帮忙吗?谢谢,

0 投票
0 回答
1489 浏览

apache-spark - 无法使用 spark 访问 hive

我正在尝试通过 spark-shell 访问 hive。我使用的是 Windows 8。Hive 版本 - 2.1.1 Spark 版本 - 2.4.0 Hadoop 版本 - 2.7.7 首先,我在 Spark-shell 中输入了以下代码

我在 /spark/conf 中的 hive-site.xml 如下

我得到的错误日志如下

如何解决它。我错过了什么还是我的配置错误?

0 投票
0 回答
7450 浏览

apache-spark - AWS Glue 数据目录作为 EMR 上 Spark SQL 的 Metastore 的问题

我有一个带有 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 主节点):

  • 作品。能够使用以下命令访问 Glue DB/Tables:

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

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

错误跟踪如下:

INFO HiveClientImpl:Hive 客户端(版本 1.2.1)的仓库位置是 hdfs:///user/spark/warehouse
INFO HiveMetaStore:0:get_database:默认
INFO 审计: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/appcache/application_1547055968446_0005/container_1547055968446_0005_01_000001/tmp/6d0f6b2c-cccd-4e90-a524-93dcc5301e20_resources
INFO SessionState: Created HDFS directory: /tmp/hive/hadoop/6d0f6b2c-cccd-4e90-a524-93dcc5301e20
INFO SessionState: Created local directory: /mnt3/yarn/usercache/hadoop/appcache/application_1547055968446_0005/container_1547055968446_0005_01_000001/tmp/yarn/6d0f6b2c-cccd-4e90-a524-93dcc5301e20
INFO SessionState: Created HDFS directory: /tmp/hive/hadoop/6d0f6b2c -cccd-4e90-a524-93dcc5301e20/_tmp_space.db
INFO HiveClientImpl:Hive 客户端(版本 1.2.1)的仓库位置是 hdfs:///user/spark/warehouse
INFO StateStoreCoordinatorRef:注册的 StateStoreCoordinator 端点
INFO CodeGenerator:生成的代码 > 191.063411 ms INFO CodeGenerator:
在 10.27313 ms 中生成的代码
INFO HiveMetaStore:0:get_database:test_db
信息审计:ugi=hadoop ip=unknown-ip-addr cmd=get_database:test_db
WARN ObjectStore: 获取数据库 test_db 失败,返回 NoSuchObjectException
org.apache.spark.sql.AnalysisException:数据库“test_db”不存在。;在 org.apache.spark.sql.internal.CatalogImpl.requireDatabaseExists(CatalogImpl.scala:44) 在 org.apache.spark.sql.internal.CatalogImpl.setCurrentDatabase(CatalogImpl.scala:64) 在 org.griffin_test.GriffinTest.ingestGriffinRecords (GriffinTest.java:97) 在 org.griffin_test.GriffinTest.main(GriffinTest.java:65) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.spark.deploy.yarn.ApplicationMaster$$anon$2.run( ApplicationMaster.scala:635)


经过大量研究和博客中的许多建议,我尝试了以下修复但无济于事,我们仍然面临着差异。

参考博客:

修复尝试:

- 在 spark-defaults.conf 和 SparkSession 中启用 Hive 支持(代码):

  • Hive 类位于 CLASSPATH 上,并将 spark.sql.catalogImplementation 内部配置属性设置为 hive:

  • 添加 Hive 元存储配置:


代码片段:


找出这种差异的根本原因的任何建议都会非常有帮助。

感谢你的帮助!谢谢!

0 投票
0 回答
456 浏览

hive - 如何获取 hive 数据库中的表总数?

是否可以获得蜂巢表的总数,如果是的话如何获得?

0 投票
1 回答
635 浏览

python - 如何将 HIVE 访问权限集成到派生自 pip 和 conda 的 PySpark(不是来自 Spark 发行版或软件包)

PySpark我通过condapippyspark 从头开始​​构建并以编程方式使用我的环境(就像我在这里演示的那样);而不是PySpark从可下载的 Spark 发行版中使用。正如您在上面 URL 的第一个代码片段中看到的那样,我通过 SparkSession 启动脚本中的(除其他外)k/v conf-pairs 来完成此操作。(顺便说一下,这种方法使我能够在各种 REPL、IDE 和 JUPYTER 中工作)。

但是,关于配置 Spark 支持以访问 HIVE 数据库和元数据存储,该手册是这样说的:

的配置Hive是通过将您的hive-site.xml, core-site.xml(用于安全配置)和hdfs-site.xml(用于 HDFS 配置)文件放入conf/.

conf/上面的意思是conf/Spark 分发包中的目录。但是pysparkvia pipandconda当然没有那个目录,那么在这种情况下如何将 HIVE 数据库和元存储支持插入到 Spark 中呢?

我怀疑这可能会被特殊前缀的 SparkConf K/V 对形式的适应:(spark.hadoop.*这里);如果是,我仍然需要确定需要哪些 HADOOP / HIVE / CORE 指令。我想我会试错。:)

注意.enableHiveSupport()已经包含在内。

我会修补spark.hadoop.*K/V 对,但如果有人知道这是如何临时完成的,请告诉我。

谢谢你。:)

编辑:提供解决方案后,我更新了上面第一个 URL中的内容。它现在集成了下面讨论SPARK_CONF_DIRHADOOP_CONF_DIR环境变量方法。

0 投票
0 回答
455 浏览

scala - 远程 Metastore db 不在不同 spark 应用程序之间共享 global_temp 数据库

我通过以下方式启动了第一个配置为连接到远程 Hive Metastore DB 的 spark 应用程序:

这是源代码:

似乎将数据加载到同一元存储数据库实例中的“global_temp”数据库​​中,如日志中所示:

但是,当我通过直线连接到 Metastore 数据库时,我从未看到字典表或 global_temp 数据库。怎么可能?

我尝试将默认数据库值更新为“字典”数据库,并在运行作业之前创建它,我收到以下错误消息:

线程 "main" org.apache.spark.SparkException 中的异常:字典是系统保留的数据库,请重命名现有数据库以解决名称冲突,或为 spark.sql.globalTempDatabase 设置不同的值,然后再次启动您的 Spark 应用程序.

知道为什么表“字典”从未出现在元存储数据库上吗?

0 投票
1 回答
2829 浏览

java - java.lang.NoSuchMethodError:org.apache.hadoop.hive.metastore.HiveMetaStoreClient.alter_table

在我试图通过使用 hive-metastore-2.1.1.jar 调用更改表添加分区的 java 代码中出现以下错误。是的,我正在使用所有其他必需的库。

让我知道是否有人遇到同样的问题。

0 投票
1 回答
86 浏览

thrift - presto worker 的 hive.metastore.uri 需要重启任何服务?

我不确定这是否已经回答。

我已经通过 AWS EC2 实例在 docker 容器中设置了 Presto 与 Co-coordinator、worker 和 Metastores,分布在可用区中。以下配置用于 presto 工作人员 -hive.metastore.uri=thrift://metastore1:9083,thrift://metastore2:9083,thrift://metastore3:9083

如果我将如下顺序更改为 [从 1,2,3 到 3,2,1],我是否需要在 Presto 工作人员处重新启动服务?hive.metastore.uri=thrift://metastore3:9083,thrift://metastore1:9083,thrift://metastore2:9083