问题标签 [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.
hive - 如何使用最新的 AVRO 模式文件更新配置单元表元数据
失败:RuntimeException MetaException(消息:org.apache.hadoop.hive.serde2.SerDeException 遇到 AvroSerdeException 确定架构。返回信号架构以指示问题:无法从给定路径读取架构:/master_data/XYZ/DA12195/business_date=20181126/_schema .avsc)
架构文件存在于 business_date=20181129 的新分区中,但配置单元表仍指向旧分区中的架构文件。
java - 如何检查 Hive 中是否存在分区?
我有一个 Hive 表,它按 column 分区dt
。如果分区不存在,我需要添加一个分区,例如dt='20181219'
.
现在我正在使用HiveMetaStoreClient#getPartition(dbName, tableName, 20181219)
. 如果分区不存在,则捕获NoSuchObjectException
并添加它。
有没有什么优雅的方法可以在 Java 中实现这一点?
hadoop - 使用 Oozie 在 Shell 操作中创建/运行 Sqoop 作业
我正在尝试使用 Oozie 在 Shell 脚本中运行 Sqoop 作业。请注意,我在本地机器(具有 12G RAM 的 vm)中使用 cdh5,并使用 HUE 来构建工作流程。
我在 shell 脚本中创建了一个 Sqoop 作业,该作业将数据从 Mysql 提取到 HDFS。我使用 Oozie 运行它:
Job 已创建(我可以在执行 list cmd 时找到它,见下文):
我什至从我的终端执行了这项工作并且它可以工作(见下面的 cmd):
我删除了最后一个导入的文件夹,并尝试再次执行该作业,但这次是在 Oozie 中。它给出了一个错误(见下文):
这是 sqoop-site.xml:
这是workflow.xml:
这是 HUE 的视图:HUE 中的工作流程
我试图在 Oozie 的 shell 脚本中运行 sqoop 作业的原因是,我想创建一个 sqoop 作业来记住最后导入的值,以便它可以增加表,然后使用 Oozie 对其进行调度。所以这只是第一步测试!
你能帮忙吗?谢谢,
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 如下
我得到的错误日志如下
如何解决它。我错过了什么还是我的配置错误?
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)
经过大量研究和博客中的许多建议,我尝试了以下修复但无济于事,我们仍然面临着差异。
参考博客:
- https://forums.aws.amazon.com/thread.jspa?threadID=263860
- 带有 AWS Glue 的 Spark 目录:找不到数据库
- https://okera.zendesk.com/hc/en-us/articles/360005768434-How-can-we-configure-Spark-to-use-the-Hive-Metastore-for-metadata-
修复尝试:
- 在 spark-defaults.conf 和 SparkSession 中启用 Hive 支持(代码):
Hive 类位于 CLASSPATH 上,并将 spark.sql.catalogImplementation 内部配置属性设置为 hive:
添加 Hive 元存储配置:
代码片段:
找出这种差异的根本原因的任何建议都会非常有帮助。
感谢你的帮助!谢谢!
hive - 如何获取 hive 数据库中的表总数?
是否可以获得蜂巢表的总数,如果是的话如何获得?
python - 如何将 HIVE 访问权限集成到派生自 pip 和 conda 的 PySpark(不是来自 Spark 发行版或软件包)
PySpark
我通过conda
和pip
pyspark 从头开始构建并以编程方式使用我的环境(就像我在这里演示的那样);而不是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 分发包中的目录。但是pyspark
via pip
andconda
当然没有那个目录,那么在这种情况下如何将 HIVE 数据库和元存储支持插入到 Spark 中呢?
我怀疑这可能会被特殊前缀的 SparkConf K/V 对形式的适应:(spark.hadoop.*
见这里);如果是,我仍然需要确定需要哪些 HADOOP / HIVE / CORE 指令。我想我会试错。:)
注意:.enableHiveSupport()
已经包含在内。
我会修补spark.hadoop.*
K/V 对,但如果有人知道这是如何临时完成的,请告诉我。
谢谢你。:)
编辑:提供解决方案后,我更新了上面第一个 URL中的内容。它现在集成了下面讨论SPARK_CONF_DIR
的HADOOP_CONF_DIR
环境变量方法。
scala - 远程 Metastore db 不在不同 spark 应用程序之间共享 global_temp 数据库
我通过以下方式启动了第一个配置为连接到远程 Hive Metastore DB 的 spark 应用程序:
这是源代码:
似乎将数据加载到同一元存储数据库实例中的“global_temp”数据库中,如日志中所示:
但是,当我通过直线连接到 Metastore 数据库时,我从未看到字典表或 global_temp 数据库。怎么可能?
我尝试将默认数据库值更新为“字典”数据库,并在运行作业之前创建它,我收到以下错误消息:
线程 "main" org.apache.spark.SparkException 中的异常:字典是系统保留的数据库,请重命名现有数据库以解决名称冲突,或为 spark.sql.globalTempDatabase 设置不同的值,然后再次启动您的 Spark 应用程序.
知道为什么表“字典”从未出现在元存储数据库上吗?
java - java.lang.NoSuchMethodError:org.apache.hadoop.hive.metastore.HiveMetaStoreClient.alter_table
在我试图通过使用 hive-metastore-2.1.1.jar 调用更改表添加分区的 java 代码中出现以下错误。是的,我正在使用所有其他必需的库。
让我知道是否有人遇到同样的问题。
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