java - Hive:无法为 HDFS 中的现有数据创建外部表
问题描述
更新1:
修改版本hadoop
为2.x,但错误依然存在。
原文:
我tpcds
将测试数据生成到 Ceph 中hive-testbench
。
目前,数据位于存储系统的根目录,在文件夹中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.2
, Hadoop 3.1.2
.
目前,我这边最可能的原因是关于hadoop版本,我将把它降级到hadoop 2.7,看看是否会出现同样的错误。
同时,欢迎任何评论。提前感谢您的帮助。
解决方案
由于问题已解决,我想在此处发布解决方案,以供可能遇到相同问题的其他访问者使用。
hive
我用来初始化架构的mysql metastore
是3.1.1
. 之后,我只是将 hive 文件夹替换为hive 2.3.2
. 这种降级不优雅,之前创建的元存储不一致,hive 2.3.2
这就是我遇到问题的原因。
我将 hive 文件夹还原为3.1.1
一切正常。
推荐阅读
- ios - 异常 'NSJSONReadingAssumeTopLevelDictionary 和 NSJSONReadingAllowFragments 不能同时设置'
- flutter - 如何在getx上返回ui之前执行db查询
- reactjs - 当我尝试在 React 应用程序中删除用户时出现错误 404
- firebase - 具有时间字符串值的数组需要 Cloud Firestore 分片字段?
- python - 使用 Selenium 和 Beautifulsoup 从 Python 中的 LinkedIn 帖子中提取评论计数
- jenkins - 如何在jenkinsfile中重新分配环境变量?
- selenium - 如何处理硒页面对象模型中的确认框/消息
- javascript - 不能在画布上同时画线和矩形
- java - PagerSlidingTabStrip 每次我们在 android 的选项卡之间切换时都会加载第一个片段/活动。我正在为视图页面中的每个选项卡使用一个片段
- flutter - 如何创建自定义滑块?