将数据插入存储的 Hive 表中

问题描述 投票:0回答:2

有关在 Hive 存储表中创建/插入数据的建议。

做了一些阅读(https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL+BucketedTables)并测试了一些选项,但没有成功。

目前我在运行插入时遇到以下错误:

Error while processing statement: FAILED: Execution Error, return code 3 from org.apache.hadoop.hive.ql.exec.spark.SparkTask

创建代码:

CREATE test_in (
id VARCHAR(250), 
field_1 VARCHAR(250), 
field_2 VARCHAR(250), 
field_3 VARCHAR(250),
field_4 VARCHAR(250), 
field_5 VARCHAR(250)
)
PARTITIONED BY(ds STRING)
CLUSTERED BY(id) into 10 buckets
STORED AS orc
tblproperties("orc.compress"="NONE","transactional"="true");

插入代码:

INSERT INTO TABLE test_in
VALUES (
'9gD0xQxOYS',
'ZhQbTjUGLhz8KuQ',
'SmszyJHEqIVAeK8gAFVx',
'RvbRdU7ia1AMHhaXd9tOgLEzi',
'a010E000004uJt8QAE',
'yh6phK4ZG7W4JaOdoOhDJXNJgmcoZU'
)

需要帮助为 create/insert 语句创建正确的语法以及有关 Hive 中分桶的一些解释。

sql hadoop hive insert sql-insert
2个回答
1
投票
  1. 创建语句 - 缺少单词
    table
    。 (可能有错别字)
  2. INSERT 语句 - 缺少分区详细信息。由于它是分区表,因此在 INSERT 操作期间需要分区值。

正确且有效的查询如下,

创建声明:

CREATE TABLE test_in (
id VARCHAR(250), 
field_1 VARCHAR(250), 
field_2 VARCHAR(250), 
field_3 VARCHAR(250),
field_4 VARCHAR(250), 
field_5 VARCHAR(250)
)
PARTITIONED BY(ds STRING)
CLUSTERED BY(id) into 10 buckets
STORED AS orc

插入声明:

INSERT INTO test_in
PARTITION (ds='123')
VALUES (
'9gD0xQxOYS',
'ZhQbTjUGLhz8KuQ',
'SmszyJHEqIVAeK8gAFVx',
'RvbRdU7ia1AMHhaXd9tOgLEzi',
'a010E000004uJt8QAE',
'yh6phK4ZG7W4JaOdoOhDJXNJgmcoZU'
)

希望这有帮助!


0
投票

如果我们想从未分区的表中添加复制值并将其存储在新的分区表中,也可以使用此语句。

插入 test_in 分区(ds =“some_value”) 选择 * 从 第二个表;

© www.soinside.com 2019 - 2024. All rights reserved.