gpt4 book ai didi

hadoop - 无法从给定路径 : hdfs://. 读取架构 ..avsc

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

我尝试通过以下步骤创建一个配置单元表:

  1. 使用 sqoop 将数据加载到 hdfs(完成)
  2. sqoop 还创建了一个 avsc 文件,我将其上传到 hdfs
  3. 在配置单元中,我想使用以下语句创建一个表:

命令:

CREATE EXTERNAL TABLE kontoauszug
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
STORED AS
INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
LOCATION 'hdfs:///user/tki/KONTOAUSZUG'
TBLPROPERTIES ('avro.schema.url'='hdfs://m1.hdp2/user/tki/KONTOAUSZUG.avsc');

我收到以下错误:

FAILED: Execution Error, return code 1 from
org.apache.hadoop.hive.ql.exec.DDLTask.
java.lang.RuntimeException: MetaException(message:org.apache.hadoop.hive.serde2.SerDeException
Encountered AvroSerdeException determining schema.
Returning signal schema to indicate problem: Unable to read schema from given path: hdfs://m1.hdp2/user/tki/KONTOAUSZUG.avsc)

这是否意味着找不到 KONTOAUSZUG.avsc?我核实了它是否可用。

内容是:

[hadoop@m1 hive]$ cat KONTOAUSZUG.avsc 
{
"type" : "record",
"name" : "KONTOAUSZUG",
"doc" : "Sqoop import of KONTOAUSZUG",
"fields" : [ {
"name" : "FK_PROCESS_ID_INS",
"type" : [ "null", "string" ],
"default" : null,
"columnName" : "FK_PROCESS_ID_INS",
"sqlType" : "2"
}, {
"name" : "FK_SOURCE_ID",
"type" : [ "null", "string" ],
"default" : null,
"columnName" : "FK_SOURCE_ID",
"sqlType" : "2"
}, {
"name" : "SRC_STM_ID",
"type" : [ "null", "string" ],
"default" : null,
"columnName" : "SRC_STM_ID",
"sqlType" : "2"
}, {
"name" : "FK_PROCESS_ID_UPD",
"type" : [ "null", "string" ],
"default" : null,
"columnName" : "FK_PROCESS_ID_UPD",
"sqlType" : "2"
}, {
"name" : "BUCHUNGSDATUM",
"type" : [ "null", "long" ],
"default" : null,
"columnName" : "BUCHUNGSDATUM",
"sqlType" : "93"
}, {
"name" : "BUCHUNGSTEXT",
"type" : [ "null", "string" ],
"default" : null,
"columnName" : "BUCHUNGSTEXT",
"sqlType" : "12"
}, {
"name" : "SOLL",
"type" : [ "null", "string" ],
"default" : null,
"columnName" : "SOLL",
"sqlType" : "2"
}, {
"name" : "HABEN",
"type" : [ "null", "string" ],
"default" : null,
"columnName" : "HABEN",
"sqlType" : "2"
}, {
"name" : "FK_KONTO_ID",
"type" : [ "null", "string" ],
"default" : null,
"columnName" : "FK_KONTO_ID",
"sqlType" : "2"
}, {
"name" : "EINGABE_MANUELL_F",
"type" : [ "null", "string" ],
"default" : null,
"columnName" : "EINGABE_MANUELL_F",
"sqlType" : "2"
} ],
"tableName" : "KONTOAUSZUG"
}

最佳答案

CREATE 表语句中,您使用了三个斜杠:hdfs:/// 而不是 hdfs://:

(...)'hdfs:///user/tki/KONTOAUSZUG' TBLPROPERTIES (...)

此外,如果您从名称节点服务器获取模式,我认为您应该在主机 url 之后写端口。

'avro.schema.url'='hdfs://m1.hdp2:端口/user/tki/KONTOAUSZUG.avsc'

检查 this了解详情。还有,this answer about hdfs ports .

关于hadoop - 无法从给定路径 : hdfs://. 读取架构 ..avsc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38290847/

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