gpt4 book ai didi

java - Hive:无法为 HDFS 中的现有数据创建外部表

转载 作者:可可西里 更新时间:2023-11-01 15:42:50 25 4
gpt4 key购买 nike

更新 1:
hadoop版本修改为2.x,错误依旧。

原创:

我使用 hive-testbenchtpcds 测试数据生成到 Ceph 中。

目前数据位于存储系统根目录下,在tpcds文件夹中。

例如hdfs dfs -ls/的结果是

drwxrwxrwx   - root root          0 2019-08-05 10:44 /hive
drwxrwxrwx - root root 0 2019-08-05 10:44 /tmp
drwxrwxrwx - root root 0 2019-08-05 10:44 /tpcds
drwxrwxrwx - root root 0 2019-08-05 10:44 /user
drwxrwxrwx - root root 0 2019-08-05 10:44 /warehouse

s3cmd ls s3://tpcds 的结果是:

                   DIR   s3://tpcds/hive/
DIR s3://tpcds/tmp/
DIR s3://tpcds/tpcds/
DIR s3://tpcds/user/
DIR s3://tpcds/warehouse/

对于 s3cmd ls s3://tpcds,存储桶名称是 tpcds

数据准备就绪后,下一个设置是在 Hive 中创建外部表以访问这些数据。之所以展示存储布局,是为了让大家确定我遇到的问题与路径无关。

使用的命令是hive -i settings/load-flat.sql -f ddl-tpcds/text/alltables.sql -d DB=tpcds_text_7 -d LOCATION=tpcds/7,然而,我遇到了以下问题:

 exec.DDLTask: org.apache.hadoop.hive.ql.metadata.HiveException: MetaException(message:Exception thrown flushing changes to datastore)
at org.apache.hadoop.hive.ql.metadata.Hive.createDatabase(Hive.java:433)
at org.apache.hadoop.hive.ql.exec.DDLTask.createDatabase(DDLTask.java:4243)

对于堆栈版本:Hive 2.3.2Hadoop 3.1.2
目前,我这边最可能的原因是关于hadoop版本,我打算将它降级到hadoop 2.7,看看是否会出现同样的错误。

同时,欢迎任何评论。提前感谢您的帮助。

最佳答案

既然问题已解决,我想在这里发布解决方案,以供更多可能遇到相同问题的访问者使用。

我用来初始化 mysql metastore 架构的 hive3.1.1。之后,我将 hive 文件夹替换为 hive 2.3.2。这种降级并不优雅,之前创建的 Metastore 与 hive 2.3.2 不一致,这就是我遇到问题的原因。

我将 hive 文件夹恢复为 3.1.1 并且一切正常。

关于java - Hive:无法为 HDFS 中的现有数据创建外部表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57351723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com