hadoop - 无法在 hive 表中加载数据,表由分区创建。告诉我'hive.partition 没有
问题描述
当我将数据加载到 hive 时,它告诉我“hive.partition 不存在”错误
centos7.2 蜂巢 0.12 hadoop 2.7.6
- - - - - - - -线 - - - - -
当我创建表时,使用外部表进入 MySQL,
细节是:
create external table people(id int,name string)
partitioned by (logdate string,hour string) row format delimited
fields terminated by ',';
但!加载数据时出错。
java.sql.SQLSyntaxErrorException: Table 'hive.PARTITIONS' doesn't exist
所以我检查 MySQL 中的数据库和表。并且数据库配置单元已经存在,但表分区确实不存在。
然后,我找到了一个这样的表名-->partition_keys
mysql> show tables;
+---------------------------+
| Tables_in_hive |
+---------------------------+
| BUCKETING_COLS |
| CDS |
| COLUMNS_V2 |
| DATABASE_PARAMS |
| DBS |
| PARTITION_KEYS |
| SDS |
| SD_PARAMS |
然后我描述并选择该表(partition_keys)
mysql> describe PARTITION_KEYS;
+--------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+---------------+------+-----+---------+-------+
| TBL_ID | bigint(20) | NO | PRI | NULL | |
| PKEY_COMMENT | varchar(4000) | YES | | NULL | |
| PKEY_NAME | varchar(128) | NO | PRI | NULL | |
| PKEY_TYPE | varchar(767) | NO | | NULL | |
| INTEGER_IDX | int(11) | NO | | NULL | |
+--------------+---------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
mysql>
mysql> select * from PARTITION_KEYS;
+--------+--------------+-----------+-----------+-------------+
| TBL_ID | PKEY_COMMENT | PKEY_NAME | PKEY_TYPE | INTEGER_IDX |
+--------+--------------+-----------+-----------+-------------+
| 1 | NULL | hour | string | 1 |
| 1 | NULL | logdate | string | 0 |
| 6 | NULL | hour | string | 1 |
| 6 | NULL | logdate | string | 0 |
+--------+--------------+-----------+-----------+-------------+
4 rows in set (0.00 sec)
我的元数据在里面。
但我无法将数据加载到我制作的配置单元表中。我怎样才能做到这一点?
我发现它也无法将表名更改为分区导致MySQL的关键字是分区。
我需要帮助,我花了很多时间来处理它。谢谢。
------------------更新以上传我的 hive-site.xml--------------------- ------
该网站不能填写超过 30000 个字符。我只是使用默认配置 cp -r hive-default.xml hive-site.xml
。因此,我只需在此默认站点中进行一些更改,如下所示:
<property> <name>hive.metastore.schema.verification</name> <value>false</value> </property>
<property> <name>hive.server2.thrift.sasl.qop</name> <value>auth</value> <description>Sasl QOP value; Set it to one of following values to enable higher levels of protection for hive server2 communication with clients. "auth" - authentication only (default) "auth-int" - authentication plus integrity protection "auth-conf" - authentication plus integrity and confidentiality protection This is applicable only hive server2 is configured to use kerberos authentication. </description> </property>
<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value> <description>JDBC connect string for a JDBC metastore</description> </property>
<property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>Driver class name for a JDBC metastore</description> </property>
其他更改是连接名称、密码。无需对 hive-site.xml 做任何事情。
解决方案
推荐阅读
- c# - 优化字符串操作
- swift - 如何在 SceneKit 中检测 GKComponent 中两个 GKEntities(SCNNodes)之间的 SCNPhysics 交集
- azure-functions - 我们可以在 Azure 函数 v2 中的 Entry 函数中使用 HttpRequestMessage 代替 HttpRequest 类吗?
- azure - 在 Azure DevOps 上运行 DockerFile 构建命令时找不到项目
- javascript - 从 PHP 检索数据的 AJAX 问题
- python - 带有“is”关键字的意外输出
- scala - 在 Scala 中,如何避免强制转换函数参数?
- django - 如何制作多值字段?
- c# - 如何使用 Microsoft.Office.Interop.Word 库删除输出中的段落间距
- tsql - 可以针对生产数据库运行 T-SQL CREATE OR ALTER 语句(无需停机)吗?